PHP如何获取警告和错误信息?

8

我希望将警告和错误信息保存到php变量中,以便将它们保存到我的数据库。

比如,当出现任何类型的错误、警告或类似情况时:

Parse error: syntax error, unexpected T_VARIABLE in /example.php(136) on line 9
Warning: [...]

我希望将它们取到变量$error_code中。
这该如何实现?

尝试从 error_log 文件中读取并将其写入数据库。 - Achrome
如果您想将其保存到变量中,可以查看以下内容:http://us3.php.net/manual/en/reserved.variables.phperrormsg.php - cryptic ツ
除非在您“包含”或“需要”的脚本中,否则无法捕获解析错误。 - Ja͢ck
4个回答

11

对于仅需记录它们的简单情况:

set_error_handler(function($errno, $errstr, $errfile, $errline) use ($db) {
    // log in database using $db->query()
});

不要仅将它们记录到您的数据库中(因为很可能一段时间后您不会再查看它们),您还可以让那些警告、通知等生成异常:

function exception_error_handler($errno, $errstr, $errfile, $errline)
{
    if (error_reporting()) { // skip errors that were muffled
        throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
    }
}

set_error_handler("exception_error_handler");

来源: ErrorException

异常错误将会有更严重的副作用,因此您应该设置一个异常处理程序,以防止未捕获的异常导致页面白屏。


3

了解set_error_handler()

设置一个用户函数(error_handler)来处理脚本中的错误。

此函数可用于在运行时定义自己的错误处理方式,例如在需要在发生关键错误时清理数据/文件或在需要在特定条件下触发错误时(使用trigger_error())的应用程序中。


2

我正在使用error_get_last();,直到找到更好的解决方案。

$lastError = error_get_last();
echo $lastError ? "Error: ".$lastError["message"]." on line ".$lastError["line"] : "";
// Save to db

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接