处理@抑制的错误的正确方法?

时间:2018-09-28 09:19:18

标签: php error-handling suppress-warnings error-suppression

manual中所述,如果错误来自error_reporting()抑制,则调用0将返回@。但是,由于我的生产服务器始终设置为error_reporting(0)(在脚本顶部),因此调用error_reporting()将始终返回到0

我该如何真正捕获或区分合法错误与@抑制的错误?

现在我的错误处理程序是这样的:

if (error_reporting() == (E_ALL OR -1))
    echo 'display specific error';
elseif (error_reporting() == 0)
    echo 'display general error';

注意:这与我之前的question有关。

1 个答案:

答案 0 :(得分:2)

Mu.即使在生产中也不应将error_reporting设置为0

在开发中,您希望将错误报告级别设置为最高级别,以便在将来可能会出现任何和所有错误或通知或过时消息或可能出现的问题时得到通知。

在生产中,您需要将错误报告级别设置为仅包含错误和警告,而不包括弃用通知之类的内容。这是为了防止您的错误日志获得多余的信息,并能够有效地跟踪生产错误。

因为您应该始终记录错误

在生产中不应执行的操作是屏幕上的显示错误。这就是ini_set('display_errors', true|false)所控制的。您仍然希望在生产中提供错误报告,只是将其记录到日志文件中。