2012-01-19 13 views
8

PHP 5.3、CentOS 6.2、httpd 2.2.15、NetBeans 7.0.1(ftp経由でリモート実行中)を使用しています。ブラウザへのPHPエラーメッセージの出力を停止します

ブラウザにエラーメッセージを表示しないようにするには、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を再起動しました)。あなたのスクリプトの先頭に次を追加

+1

セット 'はdisplay_errors = Off' – goat

+0

**本番環境** PHPエラー/' php.ini'ファイルで無効通知、およびロギングのみを持っている必要がありますログのファイル – Jakub

+0

サイドノート:PHPのエラーは例外的なものではありませんが(Javaのように)、例外に変換してそれに応じて処理する方法があります。 http://www.php.net/manual/en/class.errorexception.php – Mchl

答えて

9
display_errors = Off 

をあなたのsyslogエラーを維持できるようになりますブラウザに何も書き込まないでください。

+0

これをすべてのスクリプトで行いたいので、php.iniの設定が最善の方法と思われます。私はdisplay_error = Offとdisplay_error = 0を試してみましたが、httpdを再起動しても差はありません。 – Nicsoft

+0

あなたは "display_error"を試しましたが、キーワードは "display_errors" –

+0

残念ですが、それは私のコメントの誤字だけです。私はdisplay_errorsを使用しました。 – Nicsoft

3

試してみてください。

ini_set('display_errors',0); 

これは(時々(0)あなたのerror_reportingを無視する)php.iniの設定

をnoneにエラーレポートを設定し、サーバをオーバーライドする必要があります
+0

を参照してください。error_reporting(0)はファイルへのロギングも無効にします。 – Mchl

+0

error_reportingを0に設定すると、エラーは記録されません。私は本番環境でこれを助言しません。 'ini_set( 'display_errors'、0);をセットすれば十分です。 – klennepette

+0

Mchlとklennepette、アシスタンスに感謝します。 Nicsoft、彼らは正しい、ちょうどini_set( 'display_errors'、0);仕事をしなければならない。 – AlexC

1

は、参照してくださいdisplay_errorsディレクティブPHPエラーが額に送信されないWheterまたは

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

+0

すべてのスクリプトでこれをやりたいので、php.iniを設定するのが最善の方法です。私はdisplay_errors = Offとdisplay_errors = 0を試しましたが、httpdを再起動しても差はありません。 – Nicsoft

+0

それは 'display_errors'ではなく' display_error'です – Mchl

+0

実際には、それは私がやったことです、私のコメントを更新しました。 – Nicsoft

7

serはphp.iniの設定によって決定されます:display_errors。出力されないようにするにはOffに設定してください。このファイルは通常、あなたがoffまたは0display_errorsを設定php.iniのを変更する必要が/etc/php.ini/etc/php5/php.ini

+0

@DaveRandom OP彼はCentOS上にあり、CentOS上ではこれは通常はパスです。 – Oldskool

+0

あなたは正しいです。申し訳ありません、私の悪い... +1 :-) – DaveRandom

+0

すべてのスクリプトでこれをやりたいので、php.iniを設定するのが最善の方法です。私はdisplay_error = Offとdisplay_error = 0を試してみましたが、httpdを再起動しても差はありません。 – Nicsoft

3

の下に位置しています。あなたは、.htaccessファイルで、またはスクリプトの開始時にこれを呼び出すことによって、あなたの実際のphp.iniでこれを行うことができ、次のいずれかphp.iniで

ini_set('display_errors', '0'); 
+0

ありがとう、これは多くの助けとなりました。 – JugglingBob

0

エラーと警告を非表示にする場合は、error_handlerを設定することもできます。 display_errors = offが他の人のように、正しい設定ファイルの行でDreamhostの(ndはおそらく他のインストール)に、言っているが

は、http://php.net/manual/function.set-error-handler.php

0

FWIWを参照してください、それが

$HOME/.php/phprc

ではなく、PHPで行きます.ini(これもうまくいくかもしれませんが、DreamHost、そしておそらく他の人たちもphprcをサポートしています)。

1

エラーが1行にしか表示されない場合、その行の先頭に@を付けることでエラー表示を防ぐことができます。

@YOUR_CUSTOM_COMMAND

例:

@file_get_contents('custom_file.txt'); 
関連する問題