停止将php错误消息打印到浏览器


Stop printing php error messages to browser

我使用的是PHP 5.3、CentOS 6.2、httpd 2.2.15、NetBeans 7.0.1(通过ftp远程运行)。

我想停止向浏览器打印错误消息,只要它打印到httpd的error_log就足够了。

我想通过try/catch,我可以自己决定如何处理错误,但它仍然会打印到error_log和浏览器中。

function smic_gettext($phrase){
        try{
            $tr_text = $this->language_array[$phrase];
        } catch(Exception $e){
            error_log("Couldn't find any entry in the translation file for ".$phrase.". ".$e);
            return $phrase;
        }
        return $tr_text;
    } 

我应该如何配置才能阻止这种行为?

我试过在php.ini中设置display_errors=Off和display_eerrors=0。没有区别(我确实重新启动了httpd)。

display_errors = Off

在php.ini中,您可以保留syslog错误,但不向浏览器写入任何内容。

您需要将php.ini设置display_errors更改为off0。您可以在实际的php.ini中使用.htaccess文件来执行此操作,也可以在脚本开始时调用它:

ini_set('display_errors', '0');

尝试在脚本顶部添加以下内容:

ini_set('display_errors',0);

这应该将错误报告设置为无,并覆盖服务器php.ini设置(有时会忽略error_reporting(0))

PHP错误是否发送到浏览器由PHP.ini设置display_errors决定。将其设置为Off以避免输出。此文件通常位于/etc/php.ini/etc/php5/php.ini

如果错误只出现在一行中,则可以通过在该行的开头添加符号@来防止错误显示。

@您的自定义命令

示例:

@file_get_contents('custom_file.txt');

参见display_errors指令

http://www.php.net/manual/en/errorfunc.configuration.php

如果要隐藏错误和警告,还可以设置error_handler。

请参阅http://php.net/manual/function.set-error-handler.php

FWIW,而display_errors = off是正确的配置文件行,正如其他人所说,在DreamHost(以及可能的其他安装)上,它进入

$HOME/.php/phprc

而不是php.ini(它可能也能工作,但DreamHost——以及其他可能的主机——支持phprc)。