本番環境でのFuelPHPの設定~本番環境は本番環境モードで運用しましょう

FuelPHPには複数環境に対応するための仕組みが最初から用意されています。

本番環境に設定した場合、基本的にはエラーを画面に表示しないようになっています。

動作環境のモード指定はFuel::$envにより決まり、デフォルトで

  • Fuel::DEVELOPMENT(= development)
  • Fuel::TEST(= test)
  • Fuel::STAGING(= staging)
  • Fuel::PRODUCTION(= production)

が定義されています。

デフォルトの環境はFuel::DEVELOPMENT(開発環境)になります。

FuelPHPの動作環境は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にproductionを設定しておけば、本番環境モードになります。指定がない場合は、Fuel::DEVELOPMENTになるようになっています。

Apacheの.htaccessで環境変数を設定する場合は、public/.htaccessにある以下のコメント行を有効にすればokです。

# SetEnv FUEL_ENV production

なお、環境変数を設定できない場合や設定したくない場合は、$_SERVER['SERVER_NAME']などから本番環境かどうかを判定するように上記のコードを変更するのがよいでしょう。

そして本番環境では、FuelPHPがエラーを検知しても、詳細なエラーメッセージは表示されず、デフォルトだと以下のようなそっけないメッセージが表示されます。

開発環境モードなど他のモードでは、お馴染みの以下のようなエラーメッセージが表示されます。

ただし、public/index.phpで

/**
 * Set error reporting and display errors settings.  You will want to change these when in production.
 */
error_reporting(-1);
ini_set('display_errors', 1);

となっているため、本番環境モードに設定してもParseエラーなどが表示される可能性は残ります。必要な場合は、上記のdisplay_errorsも本番環境では0に変更しておくとよいでしょう。

Date: 2013/11/04

Tags: fuelphp, security