【发布时间】:2012-11-05 20:53:29
【问题描述】:
首先,我在谷歌上搜索了将近 40 分钟,但找不到特定问题的答案。我知道最好修复错误,但这不是这里的问题。
我需要做的是让 php 不报告 2048 错误。原因是,我继承了一个站点,我需要设置一个关闭功能来捕获致命错误并向我发送短信。这一切都很好。但是代码不断抛出 2048 错误,因此当我的关闭函数遇到最后一个错误时,抛出的始终是 2048,而不是实际的致命错误。我不需要关闭显示错误,因为这不是问题。它是我关心的后端处理。
我已通过关闭错误报告对此进行了测试。当我这样做时,我得到了预期的结果,但这意味着我无法在服务器上记录其他错误。我只是希望它忽略 2048 错误,我认为这是 E_STRICT。但是,我的错误报告仅设置为 E_ERROR,我不认为 E_STRICT 包含在其中。
那么,如何让 php 完全停止报告 2048 错误,这样它们就不会覆盖我实际的致命错误?但是保留E_ERROR,这样我就可以在服务器上记录其他错误了……
编辑
这已经解决了……有点:
我仍然不知道如何正确抑制该错误或为什么 error_reporting() 会影响 error_get_last。但是,解决了在服务器上仍然记录错误时能够忽略该错误的根本问题。我只是将错误报告完全关闭,并将错误报告添加到我的关闭功能中,以手动将数据写入日志文件。
这是我用于所有非致命错误的代码:
$message="\n[".date('d-M-Y H:i:s',time())."] PHP Notice: ".$e['message']." in ".$e['file']." on line ".$e['line'];
$file=dirname(__FILE__) . '/error_log-'.date("m-d-Y").'.txt';
file_put_contents($file, $message, FILE_APPEND | LOCK_EX);
这不是我要寻找的答案,但它解决了我的问题我仍然想知道是否有人真的知道如何关闭 e_strict 报告,这样它就不会出现在 error_get_last() 中。
和平。
【问题讨论】:
-
您是否尝试过确保它不是:error_reporting(E_ALL & ~E_STRICT);,例如。也许 php.ini 有错误或正在启用 E_STRICT。
-
我明确设置 error_reporting( E_ALL );在代码中。我试过了:error_reporting(E_ALL & ~E_STRICT);和error_reporting(E_ALL ^ E_STRICT);他们都没有工作。它们仅用于显示错误并将其记录到服务器。但不适用于 php 在 error_get_last 中报告的内容
-
对不起,我的意思是我正在设置它 error_reporting( E_ERROR );不是e_all
标签: php error-handling shutdown error-reporting