PHPでは、error_reportingの設定により出力するメッセージを変更可能ですが、PHP5.4からE_ALLにE_STRICTが含まれるようになりました。
通常、E_ALLからE_STRICTを除いてエラーを出力したい場合、php.iniで
error_reporting = E_ALL & ~E_STRICT
とすることで制御可能になります。
エラーレベルについては、マニュアル参照
http://www.php.net/manual/ja/errorfunc.constants.php
但し、CakePHPでは、フレームワーク中でerror_reportingを定義している為、php.iniの設定が反映されません。
その設定が、
cakephp/lib/Cake/bootstrap.php
の
error_reporting(E_ALL & ~E_DEPRECATED);
で設定されています。
但し、これはフレームワーク本体のプログラムですので、ここを修正すべきではありません。
Cake 2.x では Error コンフィギュレーションが設定ファイルで定義出来るようになりましたので、これを利用します。
cakephp/app/Config/core.php
の
Configure::write('Error', array( 'handler' => 'ErrorHandler::handleError', 'level' => E_ALL & ~E_DEPRECATED, 'trace' => true ));
のlevel部分に~E_STRICTを追加します。
Configure::write('Error', array( 'handler' => 'ErrorHandler::handleError', 'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT, 'trace' => true ));
これで、E_Strictのエラーが表示されなくなります。
尚、error_reportingは、PHP5以降で下記の様に変わっています。
バージョン | 説明 |
---|---|
5.4.0 | E_STRICT が E_ALL に含まれるようになりました。 |
5.3.0 | E_DEPRECATED と E_USER_DEPRECATED が追加されました。 |
5.2.0 | E_RECOVERABLE_ERROR が追加されました。 |
5.0.0 | E_STRICT が追加されました (これは E_ALL には含まれません)。 |
エラー処理なんて、そんなに変わる所でもないと思うのですが。。。メジャーバージョンアップ毎に変わっていくのがPHPらしいですね。