LoginSignup
4
6

More than 5 years have passed since last update.

CodeIgniterでエラーの出力レベルを環境毎に変更する方法

Posted at

この記事はCodeIgniter Advent Calendar 2013の10日目の記事です。

これまでkaneshinthさんが1人で書かれていたので、参加させていただきました。

Codeigniterは仕事で2年ほど使っているのですが、度々出くわす問題が、「ステージングサーバでwarningのエラーを表示したい」とか「開発サーバでdeprecatedのエラーを非表示にしたい」とかです。
それぞれ以下ようにphp.iniに設定してWEBサーバをリブートすればいけそうですが、うまくいきません。

php.ini
// 全てのエラーを表示
error_reporting = E_ALL

// deprecatedのエラーを非表示
error_reporting = E_ALL & ~E_DEPRECATED

というかやってみると、php.iniのerror_reportingの設定が全然効かない。。

実はこれ、Codeigniterのフロントコントローラーで実行時に設定されているんです。

index.php
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は他のフレームワークと比べると小回りが効いて、小規模~中規模の開発には向いていると思うので、もっと盛り上げていきたいですね!

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6