PHP-FPM 输出错误由 php 应用程序使用 nginx 进行处理

PHP-FPM 输出错误由 php 应用程序使用 nginx 进行处理

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

谢谢!

答案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了解更多信息

相关内容