PHPエラーがブラウザに表示されないようにする最良の方法は何ですか?
以下を使用することになりますか?
ini_set("display_errors", 1);
ベストプラクティスのヒントもいただければ幸いです。
エラーをログに記録しています。display_errors 値をオフ (または 0) に設定しても、エラーがログに記録されないようにしたいだけです。
PHPエラーがブラウザに表示されないようにする最良の方法は何ですか?
以下を使用することになりますか?
ini_set("display_errors", 1);
ベストプラクティスのヒントもいただければ幸いです。
エラーをログに記録しています。display_errors 値をオフ (または 0) に設定しても、エラーがログに記録されないようにしたいだけです。
最善の方法は、エラーを表示したり無視したりするのではなく、エラーをログに記録することです。
この例では、エラーをブラウザーに表示する代わりに、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");
あなたがphp.iniファイルを管理していると仮定すると、すべてのphpファイルにini_setコードを配置する代わりに、そのファイル内でこれらの変更をグローバルに行うことができます(ある日、ファイルの1つに入れるのを忘れるかもしれません。生産では悪いかもしれません)。
コードに触れずに apache .htaccess を使用してエラーをログに記録することもできます。
<IfModule mod_php5.c>
php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
</IfModule>
開発マシンに環境変数を設定します。次に、コードの最初で環境をチェックして、開発環境にいることを確認できます。次に、error_reporting()関数を使用して、PHPのエラー報告レベルを設定できます。
if ( isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel') ) {
error_reporting(E_ALL);
} else {
error_reporting(0);
}
残念ながら、PHP配布ファイルは、エラーメッセージの処理に関する混合メッセージを送信します。デフォルトのphp.iniファイルには、本番サーバーに適した設定と、開発サーバーに適した設定があります。error_reporting = E_ALL
dev(および)ではすべてのエラーをオンにdisplay_errors = On
し、prod(display_errors = off
ただしlog_errors
どこかを指す)ではオフにする必要があります。ただし、エラーが発生しないように(またはエラーが処理されるように)最善を尽くしてください。
最良の方法?エラーを修正してください!
迅速な一時的な解決策が必要な場合は、display_errors をオフにしても構いませんが、どこかにログを記録していることを確認してください。そうしないと、重大なエラーや解析エラーがサイレントになります。