2014年11月17日月曜日

CakePHP3の環境切り分け

CakePHP3でのdevelopment/productionなどの環境ごとの設定をどうするか。
公式ドキュメントを読むと、どうもbootstrapで設定を追加読み込みするよう促しているのでそれに倣う。

以下の設定で、基本は本番環境になり、developmentの環境変数を設定することで、開発環境の設定を上書きする形になる。

config/bootstrap.php

app.phpの読み込みをした後に、追加の設定を環境に応じて読み込む。config/app_development.phpに開発環境で上書きする設定を記述する。
try {
 Configure::config('default', new PhpConfig());
 Configure::load('app.php', 'default', false);

 // Add this 3 lines
 if (env("APPLICATION_ENV") == "dev" || env("APPLICATION_ENV") == "development") {
  Configure::load('app_development.php', 'default', true);
 }
 
} catch (\Exception $e) {
 die('Unable to load config/app.php. Create it by copying config/app.default.php to config/app.php.');
}

Server setting

nginxの場合はvirtualhostなどserverの設定でphpに渡す環境変数を設定する。
server {
    location ~ \.php$ {
        fastcgi_param  APPLICATION_ENV development;
    }
}

Apacheの場合は
SetEnv APPLICATION_ENV development
かな。最近触ってないから忘れたけど。