CORESERVERでのPHPのエラー設定の覚書です。
レンタルサーバーであり、かつ、共用サーバーなので、php.iniの編集はできません。.htaccessファイルでの設定か、あるいは、ini_set()関数での設定になります。
(もっとも、CORESERVERでは、自作のphp.iniを特定のディレクトリに置くことで使用できますが、その下のサブディレクトリにはphp.iniの効果が及ばないようです。)
■ まずは、.htaccessの設定から。
・エラー出力レベル設定(初期値6135)
php_value error_reporting 6143 php_value error_reporting 8191
これは作用します。(phpinfo反映される)
E_ALLは6134。すべてのエラーを出力(E_STRICT以外)。
E_ALL | E_STRICT は8191 すべてのエラーを出力。
・エラー表示設定(初期値on)
php_value display_errors off php_value display_errors on
これは作用します。(phpinfo反映される)
エラー表示のオン・オフを切り替えます。
・エラーログ記録設定(初期値off)
php_value log_errors off php_value log_errors on
これは作用します。(phpinfo反映される)
エラーログ記録のオン・オフを切り替えます。
・エラー出力ファイル設定(初期値no value)
php_value error_log 'php_error.log'
任意のファイルを設定。
これは作用しない。(phpinfo反映されない)
エラーの出力ができない。原因不明。
PHP_INI_ALLなので変更できるはずなのだが。
■ 次に、ini_set()関数での設定。
上記.htaccessの設定を無効にして、今度は、実行時のファイルにini_set()関数で設定をしてみます。
//エラーログ設定
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');
ini_set('error_log','php_error.log');
エラーログを取りたいのでログ関連をまとめて設定。エラーログの出力(取得)に成功。
ini_setでエラーログを指定するとログを取得できるのだが、.htaccessでの指定だとログを取得できない。原因を特定できたら報告します。
追記: 一応推測ですが、CORESERVERで、.htaccessでエラーログを記録できないのは、CGIモードで動かしている場合(php5.3)のようです。つまり、モジュールモードでapacheがphpを作動させる場合(php5.2)、.htaccessのphpの設定を読み取るのですが、cgiモードだと、それができずphpの設定を(一部)読み込まないようです。
ピンバック: 【CORESERVER】PHPのエラーログを記録する方法【XREA】 | WEBマスターの知恵ブログ