Ich habe Schwierigkeiten, mit phpfpm einen Docker-Container einzurichten, um die Fehlerbehandlung auf meine PHP-Anwendung zu verlagern.
Alle schwerwiegenden Ausnahmen werden vom xdebug-Stacktrace verarbeitet (http://xdebug.org/docs/stack_trace) als 200 OK, ich möchte jedoch, dass die Fehler vom PHP-Handler behandelt werden (ich möchte den Fehler als JSON neu strukturieren und den Antwortcode auf 500 setzen).
Wenn ich es display_errors = Off
in php.ini einstelle, erhalte ich den Code 500, was gut ist, aber es wird kein Fehler an die Anwendungsebene weitergegeben (White Screen of Death).
In beiden oben genannten Fällen funktioniert die Protokollierung wie vorgesehen.
Um es klarzustellen: Alles funktioniert wie gewohnt (Happy Path läuft einwandfrei), aber wenn ich absichtlich einen schwerwiegenden Fehler verursache (das kann in Zukunft passieren), habe ich Probleme.
Wie muss ich phpfpm/nginx konfigurieren, um sicherzustellen, dass die schwerwiegenden Fehler von der PHP-Anwendung behandelt werden?
PHP-FPM-Konfiguration (Dockerfile):https://github.com/nglume/docker-phpfpm/blob/master/Dockerfile
nginx-Konfiguration:https://github.com/nglume/docker-nginx/blob/master/config/nginx.conf
virtueller Host:https://github.com/nglume/nglume/blob/master/vhosts/nginx/nglume-api.local.conf
Danke!
Antwort1
Es stellte sich heraus, dass das Problem eine Kombination aus phpfpm Pool-Status php_flag[display_errors]
warUndfür die Lumen-Anwendung gab es keinen registrierten Handler register_shutdown_function
(es gab einen set_error_handler
Satz).
Sehenhttps://laracasts.com/discuss/channels/lumen/lumen-debug-mode-not-showing-stack-traceFür mehr Information