7

我想将警告和错误消息放入 php $variables 中,因此我将它们保存到我的数据库中。

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

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

我想让它们变量 $error_code

这是怎么做到的?

4

4 回答 4

9

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

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

异常会有更严重的副作用,所以你应该有一个异常处理程序来防止未捕获的异常导致白页死机。

于 2013-02-23T04:04:35.803 回答
3

调查set_error_handler()

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

此函数可用于定义您自己在运行时处理错误的方式,例如在发生严重错误时需要清理数据/文件的应用程序中,或者当您需要在某些条件下触发错误时(使用触发器错误())。

于 2013-02-23T03:49:18.837 回答
2

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

$lastError = error_get_last();
echo $lastError ? "Error: ".$lastError["message"]." on line ".$lastError["line"] : "";
// Save to db
于 2013-02-23T04:04:51.463 回答
0

有一个名为 $php_errormsg 的变量会获取上一条错误消息。在这里查看更多信息 - http://php.net/manual/en/reserved.variables.phperrormsg.php

于 2013-02-23T03:50:27.853 回答