PHP-FPM 輸出錯誤由 nginx 的 php 應用程序處理
我在使用 phpfpm 設置 docker 容器以將錯誤處理推遲到我的 php 應用程序時遇到困難。
xdebug 堆棧跟踪( http://xdebug.org/docs/stack_trace )正在將任何致命異常處理為 200 OK,但是我希望由 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
謝謝!
原來問題是 phpfpm 池狀態
php_flag[display_errors]
已打開和流明應用程序沒有註冊處理程序的組合register_shutdown_function
(它確實有一個set_error_handler
集合)。有關更多資訊,請參閱https://laracasts.com/discuss/channels/lumen/lumen-debug-mode-not-showing-stack-trace