Home >
Contributions >
PHP
Forcer une erreur interne dans Apache
Apache renvoit un code HTTP OK (200) même en cas d'erreur PHP.
Ce comportement est voulu par le mod_php, dans Apache 1 ou dans Apache 2, car c'est ainsi qu'il peut récupérer les erreurs et afficher une trace complète et détaillée.
Le patch attaché change ce comportement en modifiant les sources de php 5.2.5. Il s'applique avec la commande
$ patch -p0 < ~/mod_php-5.2.5-with-internal-error-ossa.patch
Cette commande doit être exécutée avant la compilation. Ce patch force l'erreur Apache, ce qui provoque certains changements.
- La page d'erreur affichée n'est plus celle de PHP, mais celle configurée dans Apache
- En conséquence, un code HTTP 500 est renvoyé, au lieu du code 200
- Le seul moyen d'avoir une trace de l'erreur est de configurer PHP pour qu'il logge les erreurs dans un fichier (au niveau de php.ini)
- Cette page d'erreur affichée n'est pas configurable et renverra une erreur 500 sur n'importe quel type d'erreur.