環境

環境のサポートは、FuelPHP やあなたのアプリケーションが、環境設定に基づいて意思決定することを助けます。 FuelPHP 自体は環境設定を使用して、現在有効な環境に基づいて追加の設定をロードしたり 上書きしたりします。

環境と設定

アプリに設定された環境に基づき、Config クラスは環境独自の設定ファイルを探します。 Config クラスは現在の環境にマッチするディレクトリの中の設定ファイルを探します。これは複数の開発者が各々のデータベース接続設定を使う場合に便利です。別の便利なユースケースとしては、テストサーバではすべての PHP エラーや警告を表示させ、本番サーバではエラーや警告は非表示にし、後で開発者がレビューできるようにログにのみ記録します。

これを示した例:

app/
  config/
    auth.php
    db.php
      development/
        db.php
      staging/
        email.php
      mike_dev/
        db.php
        email.php
      production/
        db.php

あなたの環境が \Fuel::DEVELOPMENT に設定されている場合、 db.php からの設定が development/db.php とマージされます。 staging/db.php は存在しないので、 \Fuel::STAGING を除く他の環境設定についても同じことがいえます。 環境設定が \Fuel::STAGING に設定されている場合、 db.php のみがロードされます。

この実際の例として、データベース設定があります。デフォルトの設定はありません (あるととても危険です)。環境固有の設定だけがあります。

定義済みの環境

FuelPHP には 4 つの定義済みの環境があります。独自の環境を作成する こともできます。

独自の環境を作成する

独自の環境を作成するには、mike_dev のような独自の文字列を使い、/fuel/app/config/ に同じ名前のフォルダを作成します。

例えば:
もし、Mike という名前の開発者がいれば、mike_dev という独自の環境を作成します。

  1. /fuel/app/config/ の中に mike_dev というフォルダを作成します
  2. Mike の設定ファイルをその新しいフォルダに配置します。例えば、/fuel/app/config/mike_dev/ に mike_dev 環境の場合に独自のデータベース設定をロードするために db.php を配置します。
  3. 次の 環境を設定する の手順に従います。PRODUCTION のような FuelPHP で定義済みの環境を使う代わりに、独自の文字列 mike_dev を使います。

環境を設定する

環境を設定するには 3 つの方法があります。最初の 2 つは、FuelPHP が Web ページをロードするときに使います。3 つ目の方法は、 FuelPHP の oil を使う場合に環境を設定する方法です。oil は最初の 2つの方法を使いませんので、oil を実行するたびに別途設定する必要があります。

サーバの環境変数で環境を設定する (推奨)

サーバ環境変数 SetEnv を使い、アプリケーションの環境を設定できます。すべてのサーバはそれぞれ環境変数を持っています。以下は既知の設定の手順です。あなたのサーバの設定がない場合、環境変数についてここを読んでください

環境変数 FUEL_ENV は大文字で、環境名は小文字で記述します。

Apache - サーバ設定
  1. Apache サーバの設定が mod_env をロードすることを確認してください
  2. httpd.conf
    ファイル (またはインクルードされるバーチャルホストの設定ファイル) を編集し 以下のコードを追加します。
    // このアプリケーションを production モードで実行する
    SetEnv FUEL_ENV production
Apache - ユーザ設定
  1. Apache サーバの設定が mod_env をロードすることを確認してください
  2. .htaccess
    ファイルをアプリケーションの
    /public
    ディレクトリに作成します
  3. .htaccess
    ファイルを編集し次のコードを追加します。
    // このアプリケーションを production モードで実行する
    SetEnv FUEL_ENV production

.htaccess を有効にすることは、Apache をかなり遅くすることに注意して下さい。可能なら、サーバ設定を使い、.htaccess を無効にしてください!

Nginx
  1. /etc/nginx/sites-available
    の中の設定ファイルを編集し、次のコードを追加します。
    # このアプリケーションを production モードで実行する
      location ~ \.php$ {
        fastcgi_param FUEL_ENV production;
      }

/fuel/app/bootstrap.php で環境を設定する

FUEL_ENV サーバ変数 で環境を設定できない場合、fuel/app/bootstrap.php の中の設定を手動で変更することができます。

// fuel/app/bootstrap.php の中

/**
 * Your environment.  Can be set to any of the following:
 *
 * Fuel::DEVELOPMENT
 * Fuel::TEST
 * Fuel::STAGING
 * Fuel::PRODUCTION
 * Any string you want, for example, a developer name (mike_dev)
 *
 */
Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::PRODUCTION);

このコードを使った場合、環境変数が設定されていればそれが優先されます!

oil 使用時の環境を設定する

FuelPHP の oil はアプリケーション用に設定された環境を使いません。oil が実行されるときの環境は、oil が実行される度に個別に設定されなければなりません。次の手順に設定方法が示されています。もし、アプリケーションの環境を設定する場合は、サーバ環境変数で環境を設定する (推奨) または /fuel/app/bootstrap.php で環境を設定する を参照して下さい。

*unix オペレーティングシステムの場合、 env コマンドを使い oil を実行する前に変数を定義できます。

$ env FUEL_ENV=production php oil -v

Windows を使用している場合、これが動作すると報告されています:

C:\> set FUEL_ENV=production && php oil -v

現在の環境を取得する

プログラムで \Fuel::$env を利用し現在の環境を取得することができます。

$_SERVER['FUEL_ENV'] を利用しないでください。 環境を設定しない場合はそれは動作しません。 $_SERVER を使用すると、それが存在しない場合やコードで上書きされる可能性があるため信頼性がありません (\Fuel::$env はそれとは異なる) 。


// 現在のアプリケーション環境と定義済みの環境とを比較する

if(\Fuel::$env == \Fuel::PRODUCTION)
{
	//どうにかする
}

// 現在のアプリケーション環境とカスタム環境とを比較する
if(\Fuel::$env == "mike_dev")
{
	//どうにかする
}