如何捕获所有PHP错误

时间:2010-12-22 23:12:06

标签: php error-handling

我需要一个解决方案来捕获所有php致命错误,异常,警告等...并给出回调。所以我可以向用户显示友好版本并记录该错误。关于记录方法。我的php脚本允许许多站点在单个安装中运行。我想我每天都会使用文本文件。任何sugesstion或php类,lib?

4 个答案:

答案 0 :(得分:8)

这使得几乎所有错误都成为ErrorException的可捕获实例:

set_error_handler(function($errno, $errstr, $errfile, $errline ){
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
});

在可能出错的代码之前使用它,对于php文件最顶层的实例或包含的公共头文件中的实例

限制最严重错误(PHP引擎,服务器,语法)无法使用用户定义的函数处理:E_ERRORE_PARSE,在调用set_error_handler()的文件中引发的E_CORE_ERRORE_CORE_WARNINGE_COMPILE_ERRORE_COMPILE_WARNING和大多数E_STRICT会使其受到损害。

但是,如果语法正确且服务器没有损坏,则不应出现这些错误。

如果需要,您可以使用register_shutdown_function()error_get_last()

解决问题

答案 1 :(得分:7)

答案 2 :(得分:0)

我非常喜欢kohana框架的错误处理。你必须做一些工作来解决它。

http://kohanaframework.org/

它允许您将错误记录到文件并通过电子邮件发送给收件人。它还使您能够重定向到友好的错误页面。

答案 3 :(得分:0)

尝试启动此网页,您应该会看到“消息:按零划分”。

// Set Error Handler

set_error_handler (
    function($errno, $errstr, $errfile, $errline) {
        throw new ErrorException($errstr, $errno, 0, $errfile, $errline);     
    }
);

// Trigger an exception in a try block

try {
    $a = 3/0;
    echo $a;
}
catch(Exception $e) {
    echo 'Message: ' .$e->getMessage();
}