LoginSignup
74
71

More than 5 years have passed since last update.

FuelPHPの複数環境切り替えとはまった所

Last updated at Posted at 2014-05-09

公式ドキュメントにすべてが書いてます。
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を書き換える事で環境切り替えができます

fuel/app/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の設定で環境変数を指定します。開発環境と本番環境のソースを同じにできるので、こっちの方がおすすめです。

httpd.confのvirtualhost例
<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です。
地味にはまりました。

74
71
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
74
71