公式ドキュメントにすべてが書いてます。
http://fuelphp.jp/docs/1.7/general/environments.html (日本語訳)
##用意されている環境
DEVELOPMENT
PRODUCTION
STAGING
TEST
デフォルトではDEVELOPMENTの環境として動作している。環境を変えると、動作時に読み込むconfigが変わります。
fuel/app/config/development //develop環境時のみ読み込み
/production //production環境時のみ読み込み
/staging // staging環境時のみ読み込み
/test // test環境時のみ読み込み
テスト環境と本番環境で、読むconfigを変えたい場合に使います。
特に使うのはDB周りの設定です。
#設定方法
PRODUCTION環境で動くように設定を変更する例です。
##方法A bootstrap.phpの書き換え
bootstrap.phpを書き換える事で環境切り替えができます
/**
* Your environment. Can be set to any of the following:
*
* Fuel::DEVELOPMENT
* Fuel::TEST
* Fuel::STAGING
* Fuel::PRODUCTION
*/
//Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);
Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::PRODUCTION);
が、gitとかでソースを管理してると面倒です。
個人的には次の方法Bの方がいいと思います。
##方法B Apacheで環境変数を設定
Apacheの設定で環境変数を指定します。開発環境と本番環境のソースを同じにできるので、こっちの方がおすすめです。
<VirtualHost *:80>
DocumentRoot /home/fuel/public
ServerName example.com
SetEnv FUEL_ENV production
</VirtualHost>
何らかの原因で本番環境時に環境変数が取れなかった時を考えて、本番環境時にはbootstrap.phpも編集して、デフォルトでPRODUCTION環境で動くようにしておくのがよいのではないかと思います。
#oilコマンドでの指定
例えばPRODUCTIONの環境で動かしたい場合は以下のようにoilコマンド前にFUEL_ENV
を入れます。
FUEL_ENV=production php oil refine migrate
#はまった所
FuelPHPのバージョン1.3くらいまでApacheやoilでの環境変数の指定は大文字だったが、1.6以降ぐらいからは小文字での指定になってました。
SetEnv FUEL_ENV PRODUCTION
これはダメで
SetEnv FUEL_ENV production
これだとOKです。
地味にはまりました。