2013年7月23日

CakePHPでDBサーバーが止まっていた(環境問題で動作できない)時のエラー

 CakePHPで作っているシステムの最終的なテストをしていた時に、MySQLのサービスを止めてからリクエストしてみたら、エラーの内容がブラウザに表示されてしまいまいた。
 当然、core.phpの'debug'は、「0」にしています。
 
 エラー時のStatck Traceと一緒にMysql.php内のDBへの接続情報(DB名、パスワードホスト名)つまり、database.phpの重要情報が表示されてしまいます。

 いろいろ調べて見た結果、core.phpの「Configure::write('Error', …」のlevelキーのE_ALLにチルダを付けてやることでtraceは出ないということがわかりました。

「この設定をしてもちゃんとerror.logには書かれるし、debug=2にした場合、ブラウザにも表示されるようなのでとりあえずは良しとします。」
(でもドキュメントを見ると、debug=0にしたときは、internal error になると書いてあるんだけど。てことは、errorのviewが表示されると思うんだけど…。違うのか?)


これは、levelキーに設定したエラーレベルの時にトレースに出力するという意味になるんでしょうか?

誰かお分かりの人がいましたら、アドバイスをお願いします。


変更前
  1. Configure::write('Error', array(
  2. 'handler' => 'ErrorHandler::handleError',
  3. 'level' => E_ALL & ~E_DEPRECATED,
  4. 'trace' => true
  5. ));

変更後
  1. Configure::write('Error', array(
  2. 'handler' => 'ErrorHandler::handleError',
  3. 'level' => ~E_ALL & ~E_DEPRECATED,
  4. 'trace' => true
  5. ));


0 件のコメント:

コメントを投稿