自定义 PHP 错误处理


Custom PHP Error Handling

我遇到了...刺激,我猜...在我使用的应用程序中使用自定义错误处理程序,我希望这里有人可以提供一些见解。

作为我们网站数据聚合的一部分,自定义蜘蛛和解析器在我们的代码库之外单独构建。它们存储在数据库中,并通过齿轮工流程中的 eval 运行。

设置了一个自定义错误处理程序,如果出现错误(例如,如果正则表达式中忘记了分隔符,或者当我没有喝咖啡时出现除以零错误),它会插入正在运行的公司的 ID 号)。在大多数情况下,此错误处理程序效果很好。

但是,我注意到,如果 eval'd 代码中有未终止的注释,则不使用错误处理程序,因此 php 错误日志不包含出现问题的公司的 ID 号。

我们在处理程序中处理以下错误类型

  • E_WARNING
  • E_USER_WARNING
  • E_ERROR
  • E_USER_ERROR

日志指出注释字符串错误为"警告",所以我不知道为什么没有调用自定义 hanlder。

有什么想法吗?

根据文档,您不能将自定义函数用作E_ERRORerror_handler()

以下错误类型无法使用用户定义的 功能:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING, E_COMPILE_ERROR、E_COMPILE_WARNING和大部分E_STRICT在 调用 set_error_handler() 的文件。