この記事はCodeIgniter Advent Calendar 2013の10日目の記事です。
これまで[kaneshinth](http://qiita.com/kaneshinth kaneshinth)さんが1人で書かれていたので、参加させていただきました。
Codeigniterは仕事で2年ほど使っているのですが、度々出くわす問題が、「ステージングサーバでwarningのエラーを表示したい」とか「開発サーバでdeprecatedのエラーを非表示にしたい」とかです。
それぞれ以下ようにphp.iniに設定してWEBサーバをリブートすればいけそうですが、うまくいきません。
// 全てのエラーを表示
error_reporting = E_ALL
// deprecatedのエラーを非表示
error_reporting = E_ALL & ~E_DEPRECATED
というかやってみると、php.iniのerror_reportingの設定が全然効かない。。
実はこれ、Codeigniterのフロントコントローラーで実行時に設定されているんです。
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
なので、ここのerror_reportingを変更しないと出力レベルは変わりません。
実行時に設定されているので、リブートは必要ないですね。
どこまでphp.iniで設定するのか、アプリケーションで設定するのかは議論の余地がありますが、ひとまず設定できました。
Codeigniterは他のフレームワークと比べると小回りが効いて、小規模~中規模の開発には向いていると思うので、もっと盛り上げていきたいですね!