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

时间:2012-01-19 14:46:27

标签: php linux netbeans error-handling apache

我正在使用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)。

8 个答案:

答案 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更改为off0。您可以在实际的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)

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

FWIW,虽然$HOME/.php/phprc是正确的配置文件行,正如其他人所说,在DreamHost(可能还有其他安装)上,它进入

SELECT REPLACE(@str, ',,', '');

而不是php.ini(也可能有效,但DreamHost - 再次,可能是其他人 - 支持phprc)。