我在使用 phpfpm 設定 docker 容器以將錯誤處理推遲到我的 php 應用程式時遇到困難。
xdebug 堆疊追蹤正在處理任何致命異常(http://xdebug.org/docs/stack_trace)為 200 好的,但是我想讓 php 處理程序處理錯誤(我想將錯誤重組為 json,並將回應碼設為 500)。
如果我display_errors = Off
在 php.ini 中設置,我會得到代碼 500,這很好,但沒有錯誤傳遞到應用程式層(死機白屏)。
對於上述兩種情況,日誌記錄都按預期工作。
需要明確的是,一切正常(快樂路徑運作良好),但是當我故意造成致命錯誤(將來可能會發生)時,我遇到了問題。
我應該如何配置 phpfpm/nginx 以確保致命錯誤由 php 應用程式處理?
PHP-FPM 配置(dockerfile):https://github.com/nglume/docker-phpfpm/blob/master/Dockerfile
nginx 設定:https://github.com/nglume/docker-nginx/blob/master/config/nginx.conf
虛擬主機:https://github.com/nglume/nglume/blob/master/vhosts/nginx/nglume-api.local.conf
謝謝!
答案1
事實證明,問題是 phpfpm 池狀態php_flag[display_errors]
打開的組合和Lumen 應用程式沒有註冊的處理程序register_shutdown_function
(它確實有一set_error_handler
組)。
看https://laracasts.com/discuss/channels/lumen/lumen-debug-mode-not-showing-stack-trace了解更多信息