我使用的是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
更改为off
或0
。您可以在实际的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)。