如何在生产PHP中捕获和记录无限递归错误?

How to capture and log infinite recursion errors in production PHP?

提问人:bigmacpro 提问时间:10/20/2023 最后编辑:Olivierbigmacpro 更新时间:10/20/2023 访问量:73

问:

最近我遇到了一个问题,由于数据库中的无效数据,某些PHP脚本在生产中遇到了无限递归。我们在系统中添加了 Sentry 以进行错误日志管理,但这无济于事,因为没有抛出错误 - PHP 刚刚死亡,Sentry 或服务器文件日志中没有日志。当问题发生时,很难确定问题的根本原因。

在做了一些研究之后,我唯一设法发现的是该设置会抛出“嵌套太深”错误。如果其他所有功能都被禁用,在生产中使用这个特定的 xdebug 功能有多安全?或者是否有其他替代方法可以捕获生产中的递归错误?xdebug.max_nesting_level

PHP 错误处理 无限递归

评论

0赞 Nigel Ren 10/20/2023
这听起来更像是尝试在测试环境中重现错误的情况。是您可以复制数据库并重现相同的场景,还是未知的原因。如果您有正在发出的请求的日志,这可能表明用户当时正在做什么。
0赞 shingo 10/20/2023
这回答了你的问题吗?如何捕获致命错误:PHP 中超过最大执行时间 30 秒
0赞 shingo 10/20/2023
您不应打开错误日志,否则您应该能够看到“最大执行时间”或“允许的内存大小”日志。
0赞 Olivier 10/20/2023
@shingo“最大执行时间”和“堆栈溢出”是不同的错误。
0赞 shingo 10/20/2023
@Olivier php 没有 stackoverflow 异常。它应该是“允许的内存大小...”错误,但 catch 方法相同。

答: 暂无答案