php - 管理 PHP 错误

标签 php error-handling fatal-error parse-error

我一直在网上搜索,试图找到一种方法来捕获 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 of E_STRICT raised in the file where set_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/

相关文章:

java - 我一直在获取java.lang.illegalstateexception?

compiler-errors - libdft_api.h :36:25: fatal error:sys/syscall.h:No such file or directory

java - 将数据从 Android 应用发布到 PHP 页面

php - 如何在特定时间后停止执行 php 中的函数?

php - 如何在 Magento 中获取重复的 SKU 产品

php - 如何避免重复定义单个Ajax错误函数

python-3.x - 字典中缺失值的错误处理

php - 为什么 'Cannot break/continue 1 level' 出现在 PHP 中?

mysql - PHP fatal error 内存不足

php - 使用 Prestashop 1.6 在模块中获取产品类别名称