Bug bizarre : erreur 500 sur phpinfo

Bug bizarre : erreur 500 sur phpinfo - PHP - Programmation

Marsh Posté le 29-01-2024 à 18:16:25    

J'ai migré un vieux Magento 1.8 entre 2 serveurs administré sur Plesk.
La migration s'est déroulé sans soucis mais le site refuse de fonctionner sur le nouveau serveur, erreur 500 sur l'index, j'ai fait les trucs de base de maintenance Magento, vider le cache, les sessions etc mais au final j'ai essayé de faire toruner un bête script php pour voir si c'était un problème de droits sur les fichier ou autre.
Je fait donc un fichier test.php contenant c'est quelques lignes :

Code :
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', 1);
  4. if (array_key_exists('info', $_GET)) {
  5.     phpinfo();
  6. } else
  7. if (array_key_exists('gcu', $_GET)) {
  8.     echo 'get_current_user:' . get_current_user();
  9. } else {
  10.     echo 'IP:' . $_SERVER['REMOTE_ADDR'];
  11. }
  12. ?>


et ce qui vas suivre vas vous étonner...

Citation :

/test.php?gcu=1  => get_current_user: nom_de_l_utilisateur_ftp (sur Plesk c'est le même que l'utilisateur apache / php)
/test.php => IP:XX.YYY.XX.YYY
/test_ip.php?phpinfo=1 => aucun affichage


Comment c'est possible d'après vous ?
 
Sachant que le même script sur un autre hébergement du même serveur Plesk (et avec la même configuration de php, la dernière 5.6) va fonctionner correctement en affichant la page phpinfo "normalement".
 
Je vais probablement aller faire un post sur le forum de Plesk mais je ne sais même pas trop quoi leur dire, quelqu'un a une idée ?
 [:mechkurt:2]


---------------
D3
Reply

Marsh Posté le 29-01-2024 à 18:16:25   

Reply

Marsh Posté le 29-01-2024 à 18:22:05    

Ils montrent quoi les logs apache et php quand tu essayes d'afficher phpinfo ?


---------------
Twitter
Reply

Marsh Posté le 29-01-2024 à 18:38:22    

Déjà pour ton phpinfo, t'attend une key "info", mais t'as mis ?phpinfo=1 dans ton exemple.
 
Ensuite comme dit koskoz, regarde déjà dans le log Apache, si c'est une erreur 500.

Reply

Marsh Posté le 29-01-2024 à 18:40:28    

J'ai même pas regardé ça :whistle:

 

Franchement le plus simple :

 
Code :
  1. <?php
  2.  


Message édité par koskoz le 29-01-2024 à 18:40:53

---------------
Twitter
Reply

Marsh Posté le 29-01-2024 à 19:11:48    

FlorentG a écrit :

Déjà pour ton phpinfo, t'attend une key "info", mais t'as mis ?phpinfo=1 dans ton exemple.
 
Ensuite comme dit koskoz, regarde déjà dans le log Apache, si c'est une erreur 500.


Malgré l'erreur de clé, ça aurait dû afficher l'IP (passer dans le else, ce qui ne semble pas être la cas). Je verrais bien un pb de droits d'accès, fichiers transférer avec un compte qui ne permet pas ensuite à apache d'exécuter les fichiers php :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-01-2024 à 20:33:23    

Dans ce cas comment expliquer que tu as un résultat pour l'IP et l'utilisateur ?
 
Il me semble que si php ne peut pas être exécuter tu verrais le contenu affiché [:transparency]
 
En tout cas, sans log, difficile d'en savoir plus [:neriki]


---------------
Twitter
Reply

Marsh Posté le 29-01-2024 à 21:09:44    

Ah oui, effectivement :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-01-2024 à 22:33:20    

Désolé pour la typo sur phpinfo et info, problème de copier coller, j'ai raccourci pour tester d'autres fonctions... :o  
 
Le probleme (que je ne comprends pas), c'est qu'il ne semble pas y'avoir d'erreur, en tout cas pas affiché alors qu'elle devrait et pas plus dans les logs.
J'avais une 500 au début dans le cas du phpinfo() mais sans autre message, je ne l'ai plus depuis que j'ai redémarré le serveur (have you tried to turn it off and on again), maintenant j'ai une reponse 200 mais toujours sans affichage. :(  
 
J'ai modifié comme ci-dessous :

Code :
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', 1);
  4. echo '<br>A';
  5. if (array_key_exists('info', $_GET)) {
  6.     echo '<br>B';
  7.     phpinfo();
  8.     echo '<br>C';
  9. } else
  10. if (array_key_exists('gcu', $_GET)) {
  11.     echo '<br>get_current_user:' . get_current_user();
  12. } else {
  13.     echo '<br>IP:' . $_SERVER['REMOTE_ADDR'];
  14. }
  15. echo '<br>D';
  16. ?>


J'ai aucun affichage lors de la boucle phpinfo, même pas le A du début, alors que dans les 2 autres cas l'affichage ne présente pas de surprise.
 
J'ai essayé dès le début en mode minimal comme ton exemple Koskoz, (je l'air refait pacqu'on est pas toujours fiable ^^), mais ça ne fonctionne pas mieux.


---------------
D3
Reply

Marsh Posté le 30-01-2024 à 08:40:15    

Nouveau test ce matin avec ce fichier :

Code :
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', 1);
  4. echo '<br>A';
  5. if (array_key_exists('info', $_GET)) {
  6.     echo '<br>B';
  7.     phpinfo();
  8.     echo '<br>C';
  9. } else
  10. if (array_key_exists('gcu', $_GET)) {
  11.     echo '<br>D<br>get_current_user:' . get_current_user();
  12. } else
  13. if (array_key_exists('error', $_GET)) {
  14.     echo '<br>E<br>error:';
  15.     trigger_error('This is a test error', E_USER_ERROR);
  16. else {
  17.     echo '<br>F<br>IP:' . $_SERVER['REMOTE_ADDR'];
  18. }
  19. echo '<br>G';
  20. ?>


/test.php?error=1

Citation :

A
E
error:
Fatal error: This is a test error in /var/www/vhosts/mon-domaine.ndd/httpdocs/test.php on line 15


/test.php?info=1

Citation :

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 30 Jan 2024 07:38:31 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
X-Powered-By: PHP/5.6.40
X-Powered-By: PleskLin


---------------
D3
Reply

Marsh Posté le 30-01-2024 à 10:17:48    

T'as même pas "B" et "C" qui s'affichent ?


---------------
Twitter
Reply

Marsh Posté le 30-01-2024 à 10:17:48   

Reply

Marsh Posté le 30-01-2024 à 13:21:52    

Citation :

Content-Length: 0


Non rien du tout, ni A ni rien d'autre...
 
Nib
 
Queud
 
Peau de zob
 
Jamais vu ça.
 
Du php non interprété oui, mais du des fois ça marche et des fois ça marche pas sans erreur ni log, c'est la première fois... :(
Je vais faire un post sur le forum de Plesk mais je ne sais même pas comment le formuler.  [:ruisseau de larmes]  
 
Le pire c'est que le but c'est pas d'avoir phpinfo() mais de faire marcher un vieux magento hébergé sur un vieux centos à une machine récente, autant dire que je suis pas sorti des ronces...


Message édité par mechkurt le 30-01-2024 à 13:22:16

---------------
D3
Reply

Marsh Posté le 30-01-2024 à 13:56:09    

Y'aurait pas un module de sécurité Apache qui bloquerait l'exécution de la page PHP quand tu lui passes certains noms de paramètres ?
J'ai eu ça avec un wiki (Mediawiki). Certaines pages n'étaient pas envoyées au navigateur parce que certains articles, quand ils étaient en mode "édition", avait de la syntaxe wiki qui était interprétée par le module de sécurité apache comme étant un truc posant pb :/ Une fois le module désactivé (ou certaines règles retirées), ça allait beaucoup mieux :) Et pareil, ça le faisait que sur certaines pages du wiki, pas sur toutes. J'ai mis du temps à trouver.
 
Et le support informatique qui disait que ça venait de l'appli. Moi, je disais non, c'est pas possible, la page n'est pas envoyée au navigateur, donc, le PHP de l'appli n'est même pas interprété, donc, le pb se passe avant l'interprétation de PHP, donc, ça vient d'apache :o
 
Edit : moi, c'était une erreur 403 que j'avais, pas 500. La solution était de désactiver les modes SecRuleEngine et SecRequestBodyAccess directement dans la configuration général d’apache
https://www.mediawiki.org/wiki/ModSecurity
https://www.mediawiki.org/wiki/Topic:Tq7x3cezzpgqwimt

Message cité 1 fois
Message édité par rufo le 30-01-2024 à 13:59:55

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-01-2024 à 14:27:07    

Vu que tu as testé uniquement avec mon code plus haut ça ne devrait pas se produire non ?
 
Qu'est-ce que tu vois si tu affiches la source de la page ?


---------------
Twitter
Reply

Marsh Posté le 30-01-2024 à 18:03:15    

rufo a écrit :

Y'aurait pas un module de sécurité Apache qui bloquerait l'exécution de la page PHP quand tu lui passes certains noms de paramètres ?
J'ai eu ça avec un wiki (Mediawiki). Certaines pages n'étaient pas envoyées au navigateur parce que certains articles, quand ils étaient en mode "édition", avait de la syntaxe wiki qui était interprétée par le module de sécurité apache comme étant un truc posant pb :/ Une fois le module désactivé (ou certaines règles retirées), ça allait beaucoup mieux :) Et pareil, ça le faisait que sur certaines pages du wiki, pas sur toutes. J'ai mis du temps à trouver.
 
Et le support informatique qui disait que ça venait de l'appli. Moi, je disais non, c'est pas possible, la page n'est pas envoyée au navigateur, donc, le PHP de l'appli n'est même pas interprété, donc, le pb se passe avant l'interprétation de PHP, donc, ça vient d'apache :o
 
Edit : moi, c'était une erreur 403 que j'avais, pas 500. La solution était de désactiver les modes SecRuleEngine et SecRequestBodyAccess directement dans la configuration général d’apache
https://www.mediawiki.org/wiki/ModSecurity
https://www.mediawiki.org/wiki/Topic:Tq7x3cezzpgqwimt


Sur mon serveur j'ai configuré ModSecurity en mode Detection only  (du coups ça fait des trace dans la log et c'est fail2ban qui gère vraiment les malveillant).
De toute façon de ce que je comprend du truc, ça ne devrait pas intervenir différemment entre un appel test.php?info=1 et test.php?cur=1 car ça intervient en amont sur de l'affichage sur la detection de requete malveillante (genre un gars qui essaye d’accéder à un fichier de config.

koskoz a écrit :

Vu que tu as testé uniquement avec mon code plus haut ça ne devrait pas se produire non ?


Oui, je penses aussi.

koskoz a écrit :

Qu'est-ce que tu vois si tu affiches la source de la page ?


Je ne vois rien, je penses que rien n'est renvoyé, j'ai un chiffre 1 en haut de page comme N° de ligne mais je penses que c'est le comportement par défaut sur un fichier vide.
Demain j'aurais plus de temps pour m'en occuper, j'essayerais de demander sur le forum de Plesk...


---------------
D3
Reply

Marsh Posté le 30-01-2024 à 18:58:53    

J'y connais rien :o , mais au pif: Y'aurais pas une ré-écriture des URL ou ce genre de trucs dans le htaccess?


---------------
Si vous ouvrez un sujet merci de ne pas le "laisser mourir" subitement et de le marquer comme "résolu" le cas échéant!
Reply

Marsh Posté le 31-01-2024 à 08:25:13    

J'ai essayé de renommer le .htaccess du Magento pour voir mais sans succès...
 
Ce serait vicieux qu'une recriture d'url capte test.php?info=1 et pas les autres, mais on est jamais trop prudent, et le htaccess pourrait agir sur autre chose que la ré-écriture (chargement de module, cache ou autre)...


---------------
D3
Reply

Marsh Posté le 31-01-2024 à 09:49:33    

Certains paramètres d'url pourraient être considérés comme dangereux pour la sécu :/ C'était ma piste...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 31-01-2024 à 10:47:50    

Ouais, enfin si t'as testé mon bout de code comme tu dis l'avoir fait, cette piste ne devrait pas en être une [:kiki]


---------------
Twitter
Reply

Marsh Posté le 31-01-2024 à 11:12:31    

Oui c'est vrai, ça ne fonctionne pas non plus dans le cas le plus simple mais on est dans un cas de figure tellement bizarre que je suis prêt à tout essayer ! ^^
 
Je voulais aussi démontrer que php fonctionne au moins en partie...


---------------
D3
Reply

Marsh Posté le 31-01-2024 à 11:45:23    

Tu pourrais nous faire une synthèse de tes tests au final avec le script exact testé. J'ai l'impression que tout n'a pas été mis sur le topic avec exactitude :jap:
Parce que j'ai cru comprendre qu'avec le même script, suivant le paramètre mis dans l'url, soit t'avais un truc qui s'affichait, soit t'avais rien du tout, comme si son serveur web ne renvoyait rien du tout.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 31-01-2024 à 13:21:21    

Désolé si je n'ai pas été clair.
En gros ne réussissant pas à afficher mon site migré, j'ai dabord pensé à un problème de migration et de version de php, donc pour tester j'ai crée un fichier info.php avec <?php phpinfo-); ?>.
Marche pas (erreur 500 je crois au tout début).
Je tentes mon fichier php de test d'IP (que j'utilisais pour filtrer par IP lors de certaine maintenance), celui-ci fonctionne donc php marchouille...
Du coups je fait un version un peu plus "élaborés" de mon fichier de test et on en est à peu près là :
https://forum.hardware.fr/hfr/Progr [...] m#t2463078
Tous les cas de figure fonctionne comme attendu (affiche de l'erreur, de l'IP ou de l'utilisateur) sauf ?info=1qui ne renvoie rien d'autre qu'une entête 200 et ne crée pas d'erreur.
A priori j'ai des 200 depuis le redémarrage du serveur, il me semble que j'étais en erreur 500 sans plus de détail avant celui-ci...


---------------
D3
Reply

Marsh Posté le 01-02-2024 à 08:26:13    

Bon ben je sais pas trop ce que c'était car en décochant puis recochant le proxy nginx et en remettant le bon handler php ça semble maintenant fonctionner...
Probablement des fichier de configuration à ré-écrire.
 
Maintenant va falloir faire tourner le Magento, ça va probablement être encore une autre partie de plaisir.


---------------
D3
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed