将所有 PHP 错误输出到数据库而不是 error_log

Posted

技术标签:

【中文标题】将所有 PHP 错误输出到数据库而不是 error_log【英文标题】:Outputting all PHP errors to database not error_log 【发布时间】:2011-02-24 01:29:47 【问题描述】:

是否可以将所有 php 错误写入 mysql 而不是标准的 error_log 文件。我想如果我从头开始编写自己的错误处理程序,这是可能的,但我有很多遗留代码,理想情况下我只需进行 1 次全局更改,就是这样。这个可以吗?

【问题讨论】:

我 99% 肯定,您不能只在 PHP.ini 中添加一些内容并让它发生。话虽如此,编写自定义错误处理程序大约需要 5 分钟。 【参考方案1】:

我认为如果不构建自己的错误处理程序就无法完成,但从技术上讲,这是您正在寻找的一个全局更改。

来自manual的修改示例:

function myErrorHandler($errno, $errstr, $errfile, $errline)

     // you'd have to import or set up the connection here 
     mysql_query("INSERT INTO error_log (number, string, file, line) ".
                 "VALUES .....");         

    /* Don't execute PHP internal error handler */
    return true;

然后

// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");

【讨论】:

【参考方案2】:

看起来 php 函数 set_error_handler 可能会满足您的需求。在第一个示例中,您可以添加一些 mysql 插入以将错误写入数据库。

http://www.php.net/manual/en/function.set-error-handler.php

【讨论】:

以上是关于将所有 PHP 错误输出到数据库而不是 error_log的主要内容,如果未能解决你的问题,请参考以下文章

php输出日志

Ubuntu PHP5/Apache2 - 显示 500 错误而不是错误消息

如何让 PHP 显示错误而不是给我 500 Internal Server Error [重复]

逐行读取文件然后哈希它们,在php中给出错误的输出

如何在代码输出中显示 PHP 错误?

如何关闭php的所有错误提示