IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

En local tout va bien mais en prod rien ne va plus


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Par défaut En local tout va bien mais en prod rien ne va plus
    Salut à tous,

    J'ai créé un blog avec PHP et MYSQL. Je n'ai pas utilisé symfony ou autre framework mais afin de me faciliter la tâche j'ai installer composer pour utiliser l'autoloader et TWIG (que j'ai installé par la suite). En local, tout fonctionne à merveille. J'envoie mes fichiers via FTP sur ionos, je lance le site, la page d'accueil apparaît (merveilleux !) mais lorsque je clique sur un onglet, j'ai une erreur 404
    - Not found
    Le fichier requis n'a pas été trouvé. Il peut s'agir d'une erreur technique. Veuillez réessayer ultérieurement. Si vous ne pouvez pas accéder au fichier après plusieurs tentatives, cela signifie qu'il a été supprimé.
    Je n'arrive pas à trouver ce qui cloche, en faite j'ai l'impression qu'il cherche à me trouver le dossier"contact" (par exemple lorsque je clique sur contact") dans mon arborescence au lieu de se référer à mon router.

    Je vous met mon arborescence tel qu'elle est visible sur ionos :

    - .git
    - asset
    - lib
    - src
    - templates
    - vendor
    - admin.css
    - composer.lock
    - index.php
    - main.css

    Si quelqu'un a une idée je suis preneur !

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Un peu compliqué de répondre car ça manque de détails.
    Quand tu dis "accéder à l'onglet", j'imagine que tu essaye d'accéder à une URL qui ressemble à : domain.ext/contact ou domain.ext/contact/

    Si c'est le cas, et d'après ta liste de fichiers, il te manque un fichier .htaccess qui doit dire que quoi que tu demandes, il faut toujours passer par index.php
    Essaye donc de créer le fichier .htaccess à la racine web du site et d'y ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    Si ça ne fonctionne pas, essaye de supprimer les lignes <IfModule mod_rewrite.c> et </IfModule>Si après avoir retiré les lignes tu te retrouves avec une erreur 500, c'est que le module Apache mod_rewrite n'est pas actif.

    NB : Si tu n'utilises pas Apache mais Nginx, le code ne sera pas correct ! Mais je ne me souviens plus de l'équivalent Nginx

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Par défaut
    Quand tu dis "accéder à l'onglet", j'imagine que tu essayes d'accéder à une URL qui ressemble à : domain.ext/contact ou domain.ext/contact/
    Oui je voulais dire accéder à l'URL.

    J'ai créer le .htaccess et j'y ai insérer les lignes que tu m'as écrites (avec et sans <IfModule mod_rewrite.c>,</IfModule>). Alors la bonne nouvelle c'est que dans les 2 cas je n'ai plus d'erreurs 500 mais toujours dans les 2 cas, lorsque j'essaye d'accéder à /contact (ou autres) ça me refresh la page.

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Hello,

    Je ne vois pas d'où viennent les erreurs 500 vu que tu n'as jamais dit que tu avais une erreur 500 mais 404 ^^

    Mon bout de code dans le .htaccess règle le problème de la 404 mais il faut évidemment que ton fichier qui gère le routing connaisse les URLs.
    Ce que "dit" mon bout de code est que pour toutes les URLs, si la destination n'existe pas en tant que fichier ou en tant que dossier, alors on redirige vers index.php

    Il faut donc que, quelque part dans ton code (soit dans index.php soit dans un fichier qui y est inclus), il faut un code qui vérifie l'URL afin de charger le(s) fichier(s) propre(s) à la page

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Par défaut
    A la base j'avais un .htaccess mais ça me provoquait une erreur 500 et je n'avais pas accès à l'erreur php mais seulement une information m'indiquant une erreur 500. J'avais donc supprimé ce fichier et est apparu mon erreur 404.

    En local mon index appelle mon router qui se charge de faire tout le boulot.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    session_start();
     
    require "vendor/autoload.php";
     
    use Lib\Http\Request;
    use Lib\Router\Router;
     
     
    $request = new Request($_GET, $_POST, $_SERVER);
    $router = new Router($request);
     
    $router->getRoutes("/", "ControllerHomepage+homepage");
    $router->getRoutes("blog", "ControllerBlog+blog");
    $router->getRoutes("blog/chapitre/:id", "ControllerArticle+getcomments");
    $router->getRoutes("about", "ControllerAbout+about");
    $router->getRoutes("report/:id", "ControllerReport+reportComment");
    $router->getRoutes("contact", "ControllerContact+contact");
    $router->getRoutes("admin", "admin\\ControllerAdminLog+getAdminLog");
    $router->getRoutes("admin/auth", "admin\\ControllerAdmin+access");
    $router->getRoutes("admin/disconnect", "admin\\ControllerAdmin+disconnect");
    $router->getRoutes("admin/chapitre/:id", "admin\\ControllerAdminArticle+getcomments");
    $router->getRoutes("admin/update/:id", "admin\\ControllerUpdate+pageUpdate");
    $router->getRoutes("admin/delete/:id", "admin\\ControllerAdmin+delete");
    $router->getRoutes("admin/comments/:id", "admin\\ControllerAdminComms+displayComms");
    $router->getRoutes("admin/delete/comm/:id", "admin\\ControllerAdminComms+deleteComm");
    $router->getRoutes("admin/delete/alertcomm/:id", "admin\\ControllerAdminComms+deleteAlertComm");
    $router->getRoutes("admin/authorize/comm/:id", "admin\\ControllerAuthorizeComm+authorizeComm");
    $router->getRoutes("admin/create", "admin\\ControllerCreate+create");
    $router->run();
    Donc lorsqu'il "voit" le / il m'appelle le bon Controller et affiche ma homepage, mais concernant le reste, il ne trouve pas ...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    on peut voir le site en ligne ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/05/2015, 10h54
  2. [JMeter] Mes scénarios ne font rien mais Jmeter dit que tout va bien :(
    Par kahya dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 27/07/2010, 14h32
  3. [MySQL] Fonctionne bien mais pas tout le temps
    Par dlamo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/08/2007, 20h04
  4. Réponses: 1
    Dernier message: 24/05/2006, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo