1

基本的に、本番環境で多くのエラーがあるライブサイトを継承しているとしましょう。基本的に、このサイト全体の再コード化を行っています。これには 1 か月程度かかる場合があります。

このサイトが、もはや存在しない外部の xml ファイル フィードに依存していた場合がいくつかありますが、コードが適切にセットアップされていないため、きれいなエラー メッセージが表示されませんでした (さまざまな同様の状況があります)。たとえば、xml ファイルのコンテンツが公開されていない場合でも、少なくともこれらのエラー メッセージは表示されなくなるため、ページに php エラーや空白の領域が表示されることはありません (そのため、ページの残りの部分は「問題なく」表示されます)。

ある時点で、誰かが set_error_handler を使用して極端ではないいくつかのケースを無効にすることを聞いたことがあります。エラーメッセージをファイル/ログに保存するか、電子メールで送信するように設定するという考えがありました (エラーメッセージが重複しないようにします) )基本的に、エンドユーザーはこれらの醜いものを見る必要はありません.

実際にこれをやった人からのヒントを探しているので、事前に感謝します。

4

2 に答える 2

4

運用サーバーでは、次の ini 設定が必要です。

ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('log_errors', true);
ini_set('error_log', '/tmp/php_errors.log'); // or whatever file is appropriate
ini_set('display_errors', false);

をオフdisplay_errorsにすると、ユーザーに別のエラー メッセージが表示されることはありませんが、ログ ファイルを調べることでエラー メッセージを確認できます。

再コード化が完了すると、ログ ファイルにエラーが記録されることはなくなります (エラーはすべて修正されているため)。

編集:一部の開発者は、エラーを非表示にする方法として を設定error_reportingしています。E_ALL ^ E_NOTICEこれは、プログラミング エラーの可能性に関するメッセージを隠してしまうため、悪い習慣です。レガシー コードからの通知が非常に多く、すべてを修正できない場合にのみ使用してください。E_ALL ^ E_NOTICE

于 2009-08-14T05:06:39.637 に答える
3

開発中は、使用するのが良い

error_reporting(E_ALL);
ini_set('display_errors', 'On');

したがって、エラーをすぐに確認できます。エラーを修正するのに役立ちます。


本番サーバーでは、エラーを表示したくないので、次のようにします。

ini_set('display_errors', 'Off');

error_reportingはアクティブのままにすることができます:display_errorsがオフの場合、エラーは表示されませんが、エラーをファイルに記録することはできます。


ところで、これらはもちろんphp.iniファイルで設定できます:


log_errors運用マシンでは、 と を使用し たいerror_log場合があるため、エラーはファイルに記録されます(これは、発生したエラーを知ることができることを意味し、場合によっては便利です) ; もちろん、時々そのファイルをチェックすることを忘れないでください;-)。


補足として、エラーを表示したくない関数/メソッドがいくつかある場合は、@ 演算子を使用して、それらがトリガーする可能性のあるエラーをマスクすることを想定できます...

...しかし、私は強くお勧めしません (非常に特殊なケースを除いて): デバッグが非常に難しくなります: そこでトリガーされたエラーは表示されず、開発マシンでも表示されません!

display_errors私の意見では、運用マシンでは無効にする方がはるかに優れています。また、エラーがまったく表示されないことも意味します。これはユーザーにとってより良いことです!

于 2009-08-14T05:07:26.967 に答える