我一直在网上搜索,试图找到一种方法来捕获 PHP (5.3) 引发的所有错误
我一直在阅读文档,它看起来像 set_error_handler
是我需要的,但它不会出现致命/解析错误。我不确定这是否可能......
这是我的来源:https://github.com/tarnfeld/PHP-Error-Handler
如果您知道所有这一切的更好解决方案,请随意 fork /提交。
提前致谢!
更新!
使用下面的答案,我完成了 error handler ,它会处理 E_ERROR|E_PARSE|E_WARNING|E_NOTICE 并在脚本致命时终止脚本! :-)
最佳答案
引用手册:
The following error types cannot be handled with a user defined function:
E_ERROR
,E_PARSE
,E_CORE_ERROR
,E_CORE_WARNING
,E_COMPILE_ERROR
,E_COMPILE_WARNING
, and most ofE_STRICT
raised in the file whereset_error_handler()
is called.
这意味着无法捕获和处理致命事件。您可以做的是设置一个额外的处理程序以在脚本退出时运行,例如
register_shutdown_function
.在该处理程序中,使用
error_get_last
并检查它是否是 fatal error 。但是,这将不允许您继续执行脚本。该脚本将结束,但您可以进行任何清理或日志记录(通常致命事件将被记录到 error.log 中)或其他任何内容。有一个user-supplied example in the comments below
set_error_handler
register_shutdown_function('shutdownFunction');
function shutDownFunction() {
$error = error_get_last();
if ($error['type'] == 1) {
//do your stuff
}
}
但请注意,这仍然只会捕获某些额外的运行时错误。
关于php - 管理 PHP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4438704/