2008-12-01 77 views
21

什么是隐藏PHP错误的最佳方法是在浏览器上显示?在生产服务器上抑制php错误的最佳方法

难道是使用以下:

ini_set("display_errors", 1); 

任何最佳实践提示,将不胜感激的!

我记录错误,我只是想确保将display_errors值设置为关(或0)不会阻止记录错误。

+0

正如我所说,你的错误将不会显示,但将被记录。 – 2008-12-01 23:22:58

+0

我喜欢“最好”这个词。 – kta 2016-12-22 01:05:44

回答

46

最好的方法当然是记录您的错误,而不是显示或忽略它们。

这个例子会将错误记录到syslog中,而不是在浏览器中显示它们。

​​
+0

作为替代“系统日志”,您可以放置​​一个文件路径并将日志写入您需要的任何位置。 – 2015-12-01 21:05:07

3

假设你是在php.ini文件的控制,可以在全球范围使该文件中这些变化,而不必中ini_set代码在所有的PHP文件奠定左右(这你可能会忘记放在一个有一天你的文件可能会很糟糕)。

1

您也可以使用Apache的.htaccess记录错误而不触及代码:

<IfModule mod_php5.c> 
    php_flag  display_errors Off 
    php_flag  log_errors  On 
    php_value  error_log  logs/errors 
</IfModule> 
0

的最好方法?修复错误!

如果您需要一个快速临时解决方案,那么可以关闭display_errors,但要确保将它们记录在某处,因为该设置会使严重/解析错误无声无息。

1

不幸的是,PHP分发文件发送了一条关于处理错误消息的混合消息。默认的php.ini文件有一些适用于生产服务器的设置,其他适用于开发服务器的设置。您应该打开dev(error_reporting = E_ALLdisplay_errors = On)中的所有错误,并关闭产品(display_errors = off,但某处指向log_errors)。但是,尽最大努力确保没有错误(或者他们被处理)。

2

在您的开发机器上设置一个环境变量。那么您可以在代码的开头检查您的环境,以确保您处于开发环境中。 然后你可以通过使用error_reporting()函数来设置PHP的错误报告级别。

if (isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel')) { 
    error_reporting(E_ALL); 
} else { 
    error_reporting(0); 
} 
相关问题