CakePHPではデバッグレベルを0としている場合、あらゆるエラーが非表示になり、CakePHPのエラーをはじめPHPのWarningやFatalエラーも記録されなくなります。
例えば、その状態で致命的なエラーが発生しても、画面が真っ白になったり、ErrorHandler::error404
メソッドが実行されるだけで、どこかで能動的に$this->log
などで記録していない限り、解決につながる情報が記録されません。
そんな時、下記ブログを参考にカスタムエラーハンドラや、PHPエラーを記録する条件を定義しておくだけで、手軽にログを取ることができるようになります。
この中の内容で、自分も利用させて頂いている2つめの方法が手軽でよいので、紹介させて頂きます。
/app/config/bootstrap.phpの中にphpエラーログを常に/app/tmp/log/php_error.logに出力するとか
例えば:
if ( Configure::read(‘debug’) == 0 ) {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set(‘display_errors’, 0); ini_set(‘log_errors’, 1);
ini_set(‘error_log’, LOGS . DS . ‘php_error.log’);
}
CakePHPでdebug=0の際にset_error_handler – benny毎日ラボ
下記のコードをAPP/config/bootstrap.phpに書いておくだけです。
if (Configure::read('debug') == 0) {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', LOGS . DS . 'php_error.log');
}
これだけで、デバッグレベルが0の場合でも、APP/tmp/logs/php_error.log
にエラー情報が記録されるようになります。