PHPのエラーログを記録する方法は3つあります。
一つは、php.iniで設定する方法。
一つは、.htaccessで設定する方法。
一つは、個別ファイルでini_set()関数で記録する方法。
この3つの方法のうち、レンタルサーバーであるXREA、CORESERVERでは、php.iniの編集はできないので、後の2つの方法でログを記録することになります。
ただ、本来、.htaccessでエラーログを記録できるはずなのですが、
php_value error_log ‘任意のファイル’
を設定しても機能せず、ログが取得できない場合があります。
症状 http://sb.xrea.com/showthread.php?t=12556
そこで、.htaccessには、
php_flag display_errors off php_flag log_errors on
この2つのみを記述して、php_value error_logは個別スクリプトでini_set()関数で実行する方法を採用します。
つまり、ログを記録したいファイルのページの先頭で、ini_set()関数を実行する共通ファイルを読み込ませてログを記録するわけです。
参考までに共通ファイルでのスクリプトを紹介します。
<?php /**** エラーログを記録 ****/ $logdate = date('Ymd') ; $logpath = realpath(dirname((__FILE__ ))).'/../../../errorlog' ; $logfile = "$logpath/$logdate.log" ; ini_set('error_log', $logfile) ;
上記スクリプトをcommon.phpなどの名前で保存して、個別ファイルの先頭に読み込ませるとログを記録します。
この際、ログの記録先として、errorlogディレクトリをルートディレクトリにパーミッション707で作成しておきます。すると、このerrorlogディレクトリに日別にエラーログが作成されていきます。
この方法だと、一つのログファイルが膨大になることを防ぐことができるので、.htaccessで記録するよりもログファイルを扱いやすくなる利点が有ります。
なお、スクリプトのご利用は自己責任でお願いします。
ピンバック: 【.htaccess】PHPのエラー設定の覚書【ini_set】 | WEBマスターの知恵ブログ