Depuis peu, les fichiers PHP ne s’exécutent pas correctement

Bonjour,

Je dispose de plusieurs années d'un serveur dédié sous Debian, j'ai un problème un peu bizarre avec mes fichiers PHP qui vient d'apparaître et que je ne comprends pas.

Mon serveur est configuré pour que si on essaye d'atteindre un fichier qui n'existe pas, cela affiche le message "Erreur 404".

Dans le dossier "test", je place 3 fichiers : une image test.jpg et 2 fichiers test.php et test.txt qui contiennent uniquement le texte "Hello World". Voici ce qui s'affiche si j'essaye d'accéder à mes fichiers dessus un navigateur :
/test/test.jpg ==> Affichage de l'image
/test/test.php ==> Affichage de "Hello Word"
/test/test.txt ==> Affichage de "Hello Word"
/test/test.pdf ==> Affichage de "Erreur 404"

A présent, si je renomme le dossier "test" en "test 2", Voici ce qui s'affiche si j'essaye d'accéder à mes fichiers dessus un navigateur :
/test 2/test.jpg ==> Affichage de l'image
/test 2/test.php ==> Affichage de "File not found."
/test 2/test.txt ==> Affichage de "Hello Word"
/test 2/test.pdf ==> Affichage de "Erreur 404"
/test 2/test2.php ==> Affichage de "Erreur 404"

Comme vous l'aurez compris, dès qu'un fichier php se trouve dans un dossier contenant un espace, il sera affiché un "File not found." si j'essaye d'y accéder. Le serveur sait que le fichier est bien présent puisqu'il est configuré pour afficher "Erreur 404" quand un fichier est absent.
Je précise que c'est un script que j'utilisais depuis plusieurs années et c'est depuis peu de temps que cela me fait ce problème. Comme je n'ai pas fait de mise à jour de mon serveur Debian, je ne vois vraiment pas d'où pourrait venir le problème.

Est-ce que quelqu'un aurait une idée de la cause de mon problème et comment le résoudre ?
Merci d'avance.

Bonjour,

et que disent les logs ?
PHP est configuré comment, en module apache ou en FPM ?

Cordialement, janus57

Merci pour ta réponse.

J'ai installé ISPConfig sur mon serveur pour gérer mon site Internet. PHP est configuré en FPM.

J'ai regardé les logs dans /var/log/ispconfig/httpd/mon_site/
Dans access.log, j'ai :
Mon IP - - [28/Jul/2024:20:29:02 +0000] "GET /magazines/Nintendo%20Le%20Magazine%20Officiel/test.php HTTP/2.0" 404 89 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
Mon IP - - [28/Jul/2024:20:29:02 +0000] "GET /favicon.ico HTTP/2.0" 302 309 "https://mon_site/magazines/Nintendo%20Le%20Magazine%20Officiel/test.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"

J'ai aussi regardé dans error.log mais il ne contenait rien concernait l'exécution de mon script php

Bonjour,

vu les quelques infos, la seule choses que je peut conseiller est de faire disparaitre les espaces.

Sinon il faudrait la configuration ainsi que les logs de PHP FPM pour pouvoir commencer à essayer de comprendre voir tester.

Cordialement, janus57

Bonjour @FredericL5

Personnellement, dans les noms de dossiers et de fichiers, je remplace systématiquement les espaces par des soulignés.

Merci pour vos réponses.

Depuis que j'ai ce bug, je renomme le dossier afin de supprimer les espaces. J'exécute ensuite le fichier php et une fois qu'il a fini de travailler, je renomme le dossier en remettant les espaces.

Grâce à vos réponses, j'ai compris que le bug se situait au niveau de PHP FPM. J'ai pu affiner mes recherches et constater que je n'étais pas le seul à avoir ce bug.
https://stackoverflow.com/questions/78794756/php-file-not-found-when-path-contains-spaces-using-fastcgi-unix-socket
https://talk.plesk.com/threads/fpm-handler-broken-with-paths-containing-spaces.336929/
A chaque fois, la solution qui est donnée est de ne pas mettre d'espace.

Je n'envisage pas de renommer mes dossiers en supprimant les espaces car cela poserait problème à d'autres sites qui utilisent mon contenu (leurs liens seraient cassés). Je pense que le plus simple sera que je remonte le fichier php d'un niveau car ainsi, il fonctionne correctement.

Erreur de conception au départ.

Le site a plus de 22 ans et j'ai fait probablement commis des erreurs de conception au départ car je ne suis pas un spécialiste web. Je dois faire avec cet héritage.


ISPConfig


Retirer cette m***e de ISPConfig !
Virtualmin fait parfaitement le job. 😉

Pour votre version PHP, ce site requière quelle version ?
J'ai fait un dépôt encore exploitable pour PHP 5.2 sous Debian 12: https://github.com/SIP-Online/debian9-php5.2-mysqlnd

Il y a longtemps de cela, j'ai pris un serveur dédié qui avait la Release OVH (elle n'existe plus aujourd'hui) et elle avait ISPConfig. Par fainéantise, j'ai tendance à conserver les outils que je connais même si ce ne sont pas les meilleurs.

Sur mon serveur, j'héberge plusieurs sites que j'ai développé moi-même. Je les avais développé avec PHP 3 et ce sont toujours ces mêmes scripts que j'utilise.
J'héberge aussi plusieurs sites WordPress et un forum phpBB, et là, j'ai besoin d'une version de PHP relativement récente (au moins la version 7). Je te remercie pour ta proposition mais un PHP 5.2 ne pourrait pas me convenir.


ISPConfig


PHP 4 est sorti courant Mai 2000, le Release OVH est sortie bien plus tard.
Mais si c'est bien de la compatibilité PHP 3, le mieux est de le convertir en HTML, il existe aujourd'hui des outils pour faire des dumps vers HTML.
Pour PHP 7 , vous avez le dépôt Sury qui fournit les version 5.6 jusqu'à la version 8.3 : (Debian) https://packages.sury.org/php/
Cela fait de nombreuses années que j'utilise ce dépôt, je n'ai jamais eu de soucis, et fonctionne très bien avec Virtualmin.
Je pense qu'il fonctionne aussi avec ISPConfig, ils ont de mémoire un forum, vous pouvez le consulter, ou ouvrir un sujet.