ただし、各アプリケーションのデバッグモード時には画面に出力したいと思います。
こういった要望を実現するには、PHPをどのように設定すれば良いでしょうか?
php.ini にて以下のように設定し、各アプリケーションにてデバッグモード時以外は「error_reporting(0);」と設定したところ、エラーが記録されません。
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = On
環境:CentOS 5.4 x64 + Apache 2.2 + PHP 5.2.12
解決方法をご存じの方、教えて頂けると幸いです。
リリース状態で発生したエラーを画面には出さずにApacheのエラーログに記録したいのですが、その方法を教えて頂けませんでしょうか。
先の回答に書いた内容を php.ini に設定すればそうなるはずだけど?
display_errors = Off 時のエラー出力先は標準では Apache のエラーログのはず。
出力されないのなら、アプリケーションのどこかで設定変更してるかもしれない。
デバッグが有効となるプロクシからの接続の場合です。
ならそのプロキシからの接続かどうか判定して、OKの場合のみ
ini_set('display_errors','On');
を実行すればいい。
以下のようなエラーハンドラ関数を用意すれば、変数 $RELEASE が存在するとき(リリース時)にはエラー出力せずに強制終了するようになります。
error_reporting(E_ALL);
if (isset($RELEASE)) $old_error_handler = set_error_handler("myErrorHandler");
function myErrorHandler($errno, $errmsg, $filename, $linenum, $vars) {
exit(1);
}