Symfoware

Symfowareについての考察blog

CodeIgniter 3 開発環境、テスト環境、本番環境の切り替え(General Topics - Handling Multiple Environments)

CodeIgniter User Guide

General TopicsのHandling Multiple Environmentsについて調べてみます。
Handling Multiple Environments


Handling Multiple Environments



Ruby on Railsなど、最近のフレームワークでは、
・開発モード(development)
・テストモード(testing)
・実稼働モード(production)

のような動作モードが用意されていると思います。

開発モードではデバッグログを詳細に出力したい。
エラー内容も画面に表示したい。

しかし、実稼働モードではログはエラーのみ。画面にエラー内容を表示させたくない。




The ENVIRONMENT Constant



CodeIgniterでも動作モードを切り替えることができます。
動作モードの切り替えは、CI_ENV変数で指定できます。


  1. $_SERVER['CI_ENV']



デフォルト(未指定)の場合は、developmentで動作します。
これはindex.phpに処理が記載されています。


  1. define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');





この変数はApacheの場合、configでSetEnvを用いて指定します。
SetEnv ディレクティブ

nginxの場合は、fastcgi_paramでの指定でしょうか。



Effects On Default Framework Behavior



このENVIRONMENTの指定は、フレームワークの処理でどこに差があるか解説します。



Error Reporting



ENVIRONMENTの指定により、エラーレポートの内容が変化します。
developmentの場合は、phpエラーの内容が画面に表示されますが、
testやproductionの場合、エラー内容は画面には表示されません。




Configuration Files



読み込むconfigファイルもENVIRONMENTで変化します。
おそらくデータベース接続の指定も変更できるのだと思います。
詳細は、ConfigClassの項目で解説されています。




やってみる



nginxで動作させているCodeIgniterで、環境設定を切り替えてみます。
ENVIRONMENTの内容を表示するだけのコントローラーを作成しました。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         echo ENVIRONMENT;
  7.     }
  8.     
  9. }




デフォルトの状態で表示してみると「development」です。

541_01.png


nginxの設定ファイルを編集します。


# vi /etc/nginx/sites-available/default




指定方法はこちらを参考にしました。
Nginx variables similar to SetEnv in Apache?


fastcgi_param CI_ENV [設定値];




設定ファイルは以下のようになります。



server {

    root /usr/share/nginx/www/ci3;
    server_name localhost;
    index index.php index.html index.htm;

    location ~* ^/(assets|files|robots\.txt) { }
    location / {
        try_files $uri $uri/ /index.php?/$request_uri;
    }

    location ~ \.php$ {
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param CI_ENV testing;
                include fastcgi_params;
        }
    location ~ /\.ht {
        deny all;
    }
}




ちゃんとテストモードに切り替わったようです。

541_02.png


productionの指定もOK

541_03.png


development,testing,production以外の値を指定した場合、こんなエラーになります。


The application environment is not set correctly.



541_04.png





CodeIgniter 3のユーザーガイド(User Guide)まとめ


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/01/29(木) 21:22:53|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<CodeIgniter 3 ビューで使用できるPHPの代替タグ(General Topics - Alternate PHP Syntax for View Files) | ホーム | CodeIgniter 3 アプリケーションの配置方法(General Topics - Managing your Applications)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1617-0b46a6c6
この記事にトラックバックする(FC2ブログユーザー)