2

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

和平。

4

2 回答 2

0

您如何设置错误报告级别,如果设置为E_ERROR,则E_STRICT跳过。

error_reporting(E_ERROR);
于 2012-11-17T06:35:35.440 回答
0

用这个修改你的 PHP.ini 文件

E_ALL & ~E_STRICT

这将显示除 E_STRICT 之外的所有错误。

或者

在你的 PHP 文件中

error_reporting(E_ALL | E_STRICT);

更多知识请访问 PHP NET http://php.net/manual/en/migrating5.errorrep.php

于 2012-11-17T06:42:24.283 回答