Sto scrivendo uno script di autenticazione in PHP, per essere chiamato come API, che deve restituire 200 500` altrimenti.Come restituire un codice HTTP 500 su qualsiasi errore, non importa cosa
Il problema che sto incontrando è che php restituisce 200
in caso di condizioni di errore, emettendo invece l'errore come html. Come posso essere assolutamente sicuro che php restituirà un codice HTTP 500
a meno che non restituisca esplicitamente l'HTTP 200
o HTTP 403
da solo? In altre parole, desidero attivare tutte le avvertenze o le condizioni di errore in 500
s, senza eccezioni, in modo che il caso predefinito stia rifiutando la richiesta di autenticazione e l'eccezione lo stia approvando con un codice 200
.
Ho giocato con set_error_handler()
e error_reporting()
, ma finora non ho avuto fortuna. Ad esempio, se il codice restituisce qualcosa prima di inviare il codice di risposta HTTP, PHP segnala naturalmente che non è possibile modificare le informazioni dell'intestazione dopo aver emesso qualcosa. Tuttavia, questo è segnalato da PHP come codice di risposta 200
con html che spiega il problema. Ho bisogno che anche questo tipo di cose sia trasformato in un codice 500
.
È possibile in PHP? O devo fare questo a un livello più alto come usare mod_rewrite
in qualche modo? Se è così, hai idea di come l'avrò sistemato?
C'è un bug report per questo qui: http://bugs.php.net/bug.php?id=50921 - cuciture simile potrebbe essere risolto –