2010-06-19 7 views
8

Dans l'OP this question, l'OP mentionne que PHP lance une erreur 500 automatiquement lorsque error_reporting est désactivée, et XDebug change ce comportement.PHP émettant 500 sur les erreurs - où est-ce documenté?

Cela m'a fait curieux, car je n'ai jamais entendu parler de PHP émettant automatiquement 500s auparavant. Selon diverses citations et réponses sur SO et ailleurs, il semble en effet être le comportement par défaut de PHP pour lancer un en-tête 500 Internal Server Error si display_errors est défini sur false.

Cependant, je suis incapable de trouver quelque chose d'officiel à ce sujet. Les pages de manuel sur display_errors et error_reporting ne disent rien.

Quelqu'un sait-il une bonne source dans les documents PHP qui parle de cela?

Répondre

9

Je ne sais pas, mais cela aurait pu être added in PHP 5.2.4:

  • gestionnaire d'erreurs Changé pour envoyer HTTP 500 au lieu de la page vierge sur les erreurs PHP. (Dmitry, Andrei Nigmatulin)

Il y a aussi cette discussion sur la internals list qui pourraient être liés:

cite:

Heure actuelle La plupart des instalations PHP utilisent le paramètre 'display_error = 0'. Ce paramètre cache les erreurs de l'utilisateur mais peut lui envoyer une page vierge.

Le correctif proposé envoie une réponse HTTP 500 sur les erreurs au lieu de pages vierges. Les pages qui ont déjà écrit quelque chose ne sont pas affectées.

Des objections ou des ajouts?

et la solution/patch proposée semble être montré ici:

+0

Bonne prise, merci! Cela semble être ça. Ensuite, c'est une nouvelle fonctionnalité mal documentée, car elle ne semble même pas avoir de ticket. –

+0

Il faut noter (et notifier l'auteur du patch) que strictement une page blanche est une page blanche, un code d'état, car une page est dans le corps, alors que le code de réponse est dans l'en-tête. Ceci est d'autant plus important compte tenu du fait que la plupart des navigateurs n'informent pas les utilisateurs des codes d'état. On s'attend à ce que le corps de la réponse leur dise cela. – amn

Questions connexes