2007年03月28日

CakePHPの本番稼動のerror_reportingについて

CakePHPでサイトを構築する場合、php関連のエラー情報をログに保存しておきたい。

具体的には、app/webroot/配下の.htaccessに下記のように記述して

php_flag display_errors off
php_flag log_errors on
php_value error_log "./logs/php_error.log"


しかし、app/configのcore.phpの52行目あたりを
define('DEBUG', 0); // 0はプロダクションモード

に変更してみるとログにエラーが記録されない。

で、原因を調査してみると、cake/libs/configure.phpのConfigure::writeでerror_reporting(0)が実行されている為と分かった。

さすがに本番稼動でerror_reporting(0)はまずい。。。
もちろん、画面にエラーを表示させてはいけないが、ログに保存しておかないと障害が発生した場合の原因が特定しづらくなるからだ。

で、対応策を考えてみた

1.error_reporting(0)をerror_reporting(E_ALL)に書き換える。
2.app/webroot/index.phpの78行目の
require CORE_PATH . 'cake' . DS . 'bootstrap.php';

の下でerror_reporting(E_ALL)を実行させる。

1の場合、cakeフォルダ配下になるのでできれば直接書き換えたくない。
2の場合、いったんerror_reporting(0)が実行されてからE_ALLと実行しているので、エラーを拾いきれない場合がある。

で結局、1の直接書き換えるを採用することにした。
理由は、エラー出力レベルをあちこちで変えられたくないことと、
CakePHPをバージョンアップに伴い書き換えないといけないが、これは、app/webroot/index.phpでも同じことだからだ。
ラベル:cakephp PHP framework
posted by asaton at 17:16| Comment(0) | TrackBack(0) | CakePHP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。