2015-03-10 11 views
5

Sto eseguendo PHP 5.4 su CentOS 7 e quando c'è un file php che genera un errore (un'eccezione o un errore di sintassi) restituisce uno stato HTTP 200 codice invece di 500.Apache/PHP restituisce il codice di stato HTTP 200 sulle pagine di errore

Come posso ottenere per restituire un errore di 500 server quando PHP rileva un errore?

Ho provato a guardare altri post Stackoverflow e sembrano tutti indicare soluzioni che restituiscono il proprio codice di errore 500 (che credo dovrebbe essere il normale comportamento di PHP su di esso senza che io debba licenziare manualmente il http header, come da queste informazioni: PHP emitting 500 on errors - where is this documented?) Inoltre, Xdebug indica un possibile problema, ma il mio problema persiste anche quando ricostruisco il server senza Xdebug.

Le impostazioni relative ho sono:

  • display_errors: su
  • display_startup_errors: su
  • error_reporting: -1 (questo fa sì che tutti gli errori da segnalare)
+1

perché vorresti? Errori di Apache e errori di php non sono la stessa cosa –

+0

Ma probabilmente gestirà ogni eccezione di PHP in un modo in cui PHP risponde automaticamente con '500'. –

+0

@Dagon Sto parlando dei codici di stato http forniti da apache. Sto cercando di ottenere il comportamento in cui un errore PHP attiva il codice di stato 500. –

risposta

7

Secondo a PHP bug report, il comportamento qui descritto è dovuto alla modalità di impostazione di display_errors.

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

Il motivo per cui gli errori di visualizzazione deve essere girato di, è perché generano errori visualizzati in uscita, e l'uscita provoca le intestazioni a essere spedito Temo che non possiamo fare molto per questo.

Quindi la risposta alla domanda è che:

  • Quando è abilitata la visualizzazione tornerà 200 sempre.
  • Quando display_errors è spento, restituirà 500.
Problemi correlati