2009-12-01 4 views
15

この質問はより一般的な方法で以前に質問されています。私は運用サーバー上の特定のページにエラーメッセージを表示したいが、php.iniファイルにアクセスすることはできません。運用サーバー上の特定のPHPページですべてのエラーと警告を有効にする最良の方法は何ですか?PHPプロダクションサーバ - エラーメッセージを表示する

私はERROR_REPORTING(E_ALL);を試しました。

答えて

32

エラーを有効にするには、あなたが(例えば、PHPスクリプトの先頭で)ものはをトリガしているポイントの前にerror_reportingを使用する必要があります

error_reporting(E_ALL); 

とエラーが表示され持っている、あなたがすべきdisplay_errorsを設定:

ini_set('display_errors', 'On'); 

(この1つはさえのconfigureをした後、あなたはそれをこのように有効にする必要がありますを意味し、本番サーバー上で無効にする必要がありますD error_reporting)もちろん


、すべてこれはあなたがエラーメッセージを見ることができることを確認するために、ifブロックにカプセル化することができます - あなたは、ライブプロダクションのウェブサイト上でこれをやっている場合は特に。

if ($_SESSION['is_admin']) 
{ 
    error_reporting(E_ALL); 
    ini_set('display_errors', 'On'); 
} 


そして、物事が少しきれい得るために、あなたもhtml_errorsを設定したいかもしれません:たとえばはset_error_handler:

ini_set('html_errors', 'On'); 
+0

私は管理者がログオンしているときにエラーを表示するのが好きです。サイトをチェックするたびに、エラーをオンにすることなく何が間違っているかをすぐに見ることができます。 ありがとう – andrew

+0

あなたは歓迎です(私は時にはそのトリックも使います - それは簡単な方法ですが、ログファイルを調べるよりはるかに簡単です):-)楽しんでください! –

+2

この回答を「エラー報告を有効にするにはどうすればよいですか?」という標準的な回答として追加しました。 PHPタグwikiに追加します。 –

1

すべて一緒にさまざまな方法がでエラーハンドラを登録することです

このようにして、エラーの処理方法を選択することができます:管理者にメールし、フレンドリーなエラーメッセージを表示し、ファイル/ dbにログ...

+0

それは興味深いと思う、私の電子メールにそれらを送ることは特に有用である、悪い – andrew

1

もう1つの注意点は、おそらくエラーを表示するだけでなく、それらをファイル/データベースに記録することです。プロダクション環境でユーザーにエラーを表示するだけでは不十分です。問題を報告するように依頼すると、遅すぎるまでサーバーの何が問題なのかわからなくなります。ベースエラーと例外ハンドラでは、問題を記録するロジック(スタックトレース、ユーザーIP、ブラウザ、アプリケーションのバージョンなど)を永続ストレージにできるだけ多くのデバッグ情報として記録してください。

4

実際にプロダクションサーバーに表示しないでください。最も良い方法は、いくつかのログシステムを作成することです。

再利用できるように注意してください。

関連する問題