我正在使用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_errors = 0。没有区别(我确实重启了httpd)。
答案 0 :(得分:11)
display_errors = Off
在php.ini中的将让你保留你的系统日志错误,但不向浏览器写任何内容。
答案 1 :(得分:7)
PHP错误是否发送到浏览器由php.ini设置决定:display_errors
。将其设置为Off
以避免输出。此文件通常位于/etc/php.ini
或/etc/php5/php.ini
答案 2 :(得分:7)
您需要将php.ini设置display_errors
更改为off
或0
。您可以在实际的php.ini中使用.htaccess文件执行此操作,也可以在脚本开头调用此函数:
ini_set('display_errors', '0');
答案 3 :(得分:5)
尝试将以下内容添加到脚本的顶部:
ini_set('display_errors',0);
这应该将错误报告设置为none并覆盖服务器php.ini设置(有时会忽略你的error_reporting(0))
答案 4 :(得分:2)
如果错误仅出现在一行中,则可以通过在该行的开头添加sign @来防止错误显示。
@YOUR_CUSTOM_COMMAND
示例:
@file_get_contents('custom_file.txt');
答案 5 :(得分:1)
请参阅display_errors
指令
答案 6 :(得分:0)
如果要隐藏错误和警告,还可以设置error_handler。
答案 7 :(得分:0)
FWIW,虽然$HOME/.php/phprc
是正确的配置文件行,正如其他人所说,在DreamHost(可能还有其他安装)上,它进入
SELECT REPLACE(@str, ',,', '');
而不是php.ini(也可能有效,但DreamHost - 再次,可能是其他人 - 支持phprc)。