Nginx

PHP-FPM 輸出錯誤由 nginx 的 php 應用程序處理

  • June 2, 2015

我在使用 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

引用自:https://serverfault.com/questions/693185