使用set_exception_handler在PHP error_log中重复条目

时间:2018-11-24 02:48:39

标签: php

我似乎找不到此问题的根源。我实际上在另一个应用程序中运行了几乎相同的Docker容器和Exception handler lib。但是,由于某种原因,我在错误日志文件中得到了重复的日志条目。

问题在于,不仅仅是相同的重复条目(这将是另一个有趣的问题)。它记录了相同的异常,并且具有相同的堆栈跟踪,但是一个来自我的自定义异常处理程序(JSON),另一个是默认的PHP错误日志处理程序(或者看起来-已通过CLI SAPI和PHP-FPM测试过) )。

我假设如果设置了异常处理程序,PHP将不会写入日志文件。我还在异常处理程序的回调函数的末尾执行die(1)

同样,所有的异常处理代码似乎都运行良好。只是PHP仍在记录Exception。是否需要在PHP配置端完成设置或我缺少的其他设置?

下面是错误日志输出的副本:

[24-Nov-2018 02:20:11 UTC] PHP Exception:  Testing in /srv/www/boot/common.php on line 65
[24-Nov-2018 02:20:11 UTC] PHP Stack trace:
[24-Nov-2018 02:20:11 UTC] PHP   1. {main}() /srv/www/public/index.php:0
[24-Nov-2018 02:20:11 UTC] PHP   2. require() /srv/www/public/index.php:13
{"timestamp":"2018-11-24 02:20:11 UTC","level":"critical","message":"Testing","app_version":{},"environment":"dev","class":"Exception","file":"\/srv\/www\/boot\/common.php","line":65,"code":0,"previous":null,"trace":[{"file":"\/srv\/www\/public\/index.php","line":13,"function":"require"}],"user":[],"tags":[],"extra":[],"output_buffers":[]}

1 个答案:

答案 0 :(得分:-1)

将其留给可能遇到此问题的任何人。问题出在XDebug劫持了您的异常。在我们的开发环境中的特定应用上启用了此功能。