好的,首先,我已经搜索了将近 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() 中。
和平。