2011年6月28日火曜日

【CakePHP】でNoticeエラーを表示させない

http://blog.livedoor.jp/loopus/archives/50214277.html

CakePHPで開発を行っているときは、app/config/core.php にて debug を1もしくは2に設定すると思います。
しかし、それだと Notice が発生した場合にも表示されてしまいます。
php.ini でNoticeを出さないように設定しても、Cakeは親切なので? きっちりNoticeを表示してくれます。

本来はNoticeを表示させないようなプログラムを書くのが望ましいですが、どうしてもという場合の解決方法をお教えします。

cake/libs/configure.php の修正

cake/libs/configure.php の273行目あたりを以下のように修正し、強制的にE_ALLにされるのを回避する。
if (isset($config['debug'])) {
if ($_this->debug) {
// error_reporting(E_ALL);
cake/libs/debugger.php の修正
cake/libs/debugger.php の193行目あたりを修正し、E_NOTICEが表示される時にハンドリングされないようにする。
$level = LOG_DEBUG;
switch ($code) {
case E_PARSE:
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
$error = 'Fatal Error';
$level = LOG_ERROR;
break;
case E_WARNING:
case E_USER_WARNING:
case E_COMPILE_WARNING:
case E_RECOVERABLE_ERROR:
$error = 'Warning';
$level = LOG_WARNING;
break;
/* case E_NOTICE:
case E_USER_NOTICE:
$error = 'Notice';
$level = LOG_NOTICE;
break;*/


これで、debugを有効にしてもNoticeを表示しなくなる。

0 件のコメント:

コメントを投稿