Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur 500 en ligne mais pas en local

.htaccess en cause

Sujet résolu
    27 avril 2024 à 13:58:26

    Bonjour à tout le monde,

    Après avoir passé plusieurs jours à chercher sur différents forums (celui-ci compris), je crée ce sujet car je n'ai pas trouvé de réponse à ma problématique.

    J'héberge une application web chez IONOS (hébergement mutualisé donc pas de log) qui est un "clone" du Projet de blog pour un écrivain du parcours développeur web junior d'OCR (de 2019, il me semble qu'il a changé depuis).

    En local (sous wamp 64) tout fonctionne correctement, cependant une fois sur le serveur de IONOS, j'ai une erreur 500 qui bloque tout. Comme je l'ai précisé précédemment, cela fait quelques jours que je suis là-dessus et que je teste beaucoup de choses différentes pour résoudre mon problème et tous ces tests m'ont permis d'arriver à la conclusion que le problème vient de mon fichier .htaccess.

    En effet, si je rajoute la ligne suivante au début de mon fichier .htaccess:

    AddHandler application/x-httpd-php81 .php

    Je n'ai plus d'erreur 500, mais le code PHP du fichier index.php qui s'affiche à la place d'être interprété.

    Voici le contenu de mon fichier .htaccess:

    Options +FollowSymLinks
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^admin/ index.php?app=Backend [QSA,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteRule ^(.*)$ index.php?app=Frontend [QSA,L]

    Je ne comprends pas pourquoi ce fichier (qui ne fait que de la réécriture d'URL) ne pose problème qu'une fois en ligne...

    Pour infos le fichier index.php se trouve dans le même dossier que le .htaccess et c'est un "bootstrap" qui utilise la classe SplClassLoader du MIT (je les poseterai si besoin).

    J'ai contacté IONOS avant de poster ici et ils m'ont répondu qu'ils voulaient bien m'aider si je voulais bien me délester de 70€, étant donné que cela fait un peu cher à mes yeux pour 1 ligne de code ou 2 dans un .htaccess (ils n'ont vraiment pas honte), je viens ici pour demander votre aide généreuse pour m'aider à comprendre quel est le problème afin de pouvoir le résoudre.

    Merci d'avance,

    Kévin




    -
    Edité par KévinThais 27 avril 2024 à 14:00:00

    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2024 à 0:31:20

      Salut

      Dans un premier temps, as-tu tenté d'activer l'affichage de tous les messages d'erreur, afin d'avoir plus que le sibyllin message générique de l'erreur 500 ?

      Ensuite, as-tu bien vérifié qu'entre ton environnement local et Ionos, tu avais les mêmes versions de PHP et les mêmes extensions d'activées ? La comparaison de deux fichiers simples avec juste <?php phpinfo(); dedans devrait faire l'affaire.

      Je recommande cette entrée de la FAQ PHP et celles qui y seraient liées.

      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2024 à 10:10:20

        Bonjour Ymox,

        Tout d'abord, merci pour ton aide.

        Je suis vraiment navré d'avoir créé ce post, il mériterait même presque d'être supprimé... J'ai trouvé d'où venait le problème en faisant d'autres tests (versions PHP et gestion des erreurs comme tu me l'as suggéré et j'ai bifurqué sur mon htaccess dans la foulée), le responsable était bien le fichier .htaccess, si ça peut servir à quelqu'un d'autre... il y avait un saut de ligne au début de mon fichier avant les instructions de redirection, j'ai supprimé ma ligne :

        AddHandler application/x-httpd-php81 .php

        Et j'ai supprimé tous les sauts de lignes en début de fichier -> résultat, tout fonctionne, je me sens vraiment c..

        Du coup j'en comprends qu'un environnement en production est bien moins permissif qu'un environnement local en ce qui concerne la "propreté" du code.

        Encore désolé pour ce post un peu ridicule mais j'imagine que je ne dois pas être le 1er à qui ça arrive et sûrement pas le dernier non-plus donc j'espère qu'il évitera à d'autres débutants comme moi de bloquer trop longtemps sur quelque chose d'aussi simple.

        Encore merci à toi Ymox car ce sont tes suggestions qui ont déclenché la résolution du problème.

        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2024 à 10:16:15

          Si je comprends bien, Ionos était déjà en PHP 8.1, donc ce que tu souhaitais ajouter dans le .htacess était non seulement probablement inutile, mais aussi pas accepté. J'avoue que je n'y aurais pas pensé tout de suite, mais le fait de ne pas avoir de log — on parle probablement des logs Symfony ici — aurait dû me mettre la puce à l'oreille (en fait, c'est simplement que cette erreur n'étant pas générée par le PHP, c'est dans les logs d'erreur d'Apache que ça se retrouverait).

          Tu as un bouton en haut de sujet pour signaler que celui-ci est résolu, je te recommande de l'utiliser  :)

          -
          Edité par Ymox 28 avril 2024 à 10:16:32

          • Partager sur Facebook
          • Partager sur Twitter

          Erreur 500 en ligne mais pas en local

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown