25

PHPエラーがブラウザに表示されないようにする最良の方法は何ですか?

以下を使用することになりますか?

ini_set("display_errors", 1);

ベストプラクティスのヒントもいただければ幸いです。

エラーをログに記録しています。display_errors 値をオフ (または 0) に設定しても、エラーがログに記録されないようにしたいだけです。

4

7 に答える 7

49

最善の方法は、エラーを表示したり無視したりするのではなく、エラーをログに記録することです。

この例では、エラーをブラウザーに表示する代わりに、syslog にログを記録します。

ini_set("display_errors", 0);
ini_set("log_errors", 1);

//Define where do you want the log to go, syslog or a file of your liking with
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file");
于 2008-12-01T21:02:21.457 に答える
3

あなたがphp.iniファイルを管理していると仮定すると、すべてのphpファイルにini_setコードを配置する代わりに、そのファイル内でこれらの変更をグローバルに行うことができます(ある日、ファイルの1つに入れるのを忘れるかもしれません。生産では悪いかもしれません)。

于 2008-12-01T22:32:23.880 に答える
3

コードに触れずに apache .htaccess を使用してエラーをログに記録することもできます。

<IfModule mod_php5.c>
  php_flag      display_errors  Off
  php_flag      log_errors      On
  php_value     error_log       logs/errors
</IfModule>
于 2008-12-01T22:36:28.957 に答える
2

開発マシンに環境変数を設定します。次に、コードの最初で環境をチェックして、開発環境にいることを確認できます。次に、error_reporting()関数を使用して、PHPのエラー報告レベルを設定できます。

if ( isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel') ) {
    error_reporting(E_ALL);
} else {
    error_reporting(0);
}
于 2008-12-02T19:02:30.403 に答える
1

残念ながら、PHP配布ファイルは、エラーメッセージの処理に関する混合メッセージを送信します。デフォルトのphp.iniファイルには、本番サーバーに適した設定と、開発サーバーに適した設定があります。error_reporting = E_ALLdev(および)ではすべてのエラーをオンにdisplay_errors = Onし、prod(display_errors = offただしlog_errorsどこかを指す)ではオフにする必要があります。ただし、エラーが発生しないように(またはエラーが処理されるように)最善を尽くしてください。

于 2008-12-02T05:36:39.560 に答える
-1

最良の方法?エラーを修正してください!

迅速な一時的な解決策が必要な場合は、display_errors をオフにしても構いませんが、どこかにログを記録していることを確認してください。そうしないと、重大なエラーや解析エラーがサイレントになります。

于 2008-12-01T22:42:15.827 に答える