2015-03-10 10 views
5

Ich benutze PHP 5.4 auf CentOS 7 und wenn es eine PHP-Datei gibt, die einen Fehler (entweder eine Ausnahme oder einen Syntaxfehler) auslöst, gibt es einen HTTP 200 Status zurück Code anstelle von 500.Apache/PHP gibt HTTP Status Code 200 auf Fehlerseiten zurück

Wie bekomme ich es, um einen 500 Server-Fehler zurückzugeben, wenn PHP einen Fehler feststellt? Ich habe versucht, andere Stackoverflow - Beiträge zu betrachten, und alle scheinen auf Lösungen zu verweisen, die den eigenen 500 - Fehlercode zurückgeben (was meiner Meinung nach das normale Verhalten von PHP sein sollte, ohne dass ich das manuell auslösen müsste) http Header, nach dieser Info: PHP emitting 500 on errors - where is this documented?) Es zeigt auch auf Xdebug als ein mögliches Problem, aber mein Problem bleibt bestehen, auch wenn ich den Server ohne Xdebug neu erstellen.

Die entsprechenden Einstellungen, die ich habe, sind:

  • display_errors: auf
  • display_startup_errors: auf
  • error_reporting: -1 (dies bewirkt, dass alle Fehler gemeldet werden) Nach
+1

warum möchten Sie? Apache-Fehler und PHP-Fehler sind nicht dasselbe –

+0

Aber er wird wahrscheinlich jede PHP-seitige Ausnahme behandeln, so dass PHP automatisch mit '500' antwortet. –

+0

@Dagon Ich spreche über http Status-Codes von Apache serviert. Ich versuche, das Verhalten zu erhalten, wo ein PHP-Fehler den 500-Statuscode auslöst. –

Antwort

7

a PHP bug report ist das hier beschriebene Verhalten auf die Einstellung von display_errors zurückzuführen.

[2010-02-03 19:03 UTC] [email protected]

Der Grund, warum Anzeigefehler werden muss eingeschaltet ist, weil angezeigter Fehler Ausgabe zu erzeugen, und Ausgang bewirkt, dass die Header gesendet werden. Ich fürchte, wir können nicht viel dagegen tun.

So ist die Antwort auf die Frage ist, dass:

  • Wenn display_errors ist es 200 immer zurückkehren wird.
  • Wenn display_errors ausgeschaltet ist, wird 500 zurückgegeben.
Verwandte Themen