Laravel4で環境ごとにconfigを読みかえる
今、あるサイトをLaravelで開発しているんですが、いざデプロイの段階となりますと、DBの接続先やらなにやらの各種設定を、デプロイ先ごとに分けたくなります。
まあデプロイ時のたびに書き直せばいいわけですが、できる限り手間は省きたいと思うのが人情というものです。
主要なフレームワークは、デプロイ環境ごとに設定を分ける仕組みを持っているものでして、Laravelも当然その仕組みがデフォルトでついてきます。
Laravelではデフォルトのconfigディレクトリの中に任意の名前でディレクトリを作り、その中に設定ファイルを置く形で設定を分けることになります。
上の画像で言えば「dev」ディレクトリと「local」ディレクトリがそれにあたるわけです。
こいつらを実行時に読み込ませるようにするには、さらにbootstrap/start.phpで
$env = $app->detectEnvironment(array( 'local' => array('local-machine-name'), 'dev' => array('dev-machine-name'), ));
と編集してやるそうです。(詳しくは下記URL)
http://blog.uklab.jp/web/change-detectenvironment-laravel4-1/
(今回の案件では別の方法をとっていますけど)
ちなみに、migrationとかdb:seedを普通に実行すると、configディレクトリ直下のdatabase.phpを読みに行ってしまいます。
したがって、環境毎にこれらの操作を行うときには、artisanコマンドにオプションをつけて実行します。
[migration] php artisan --env=[環境名] migrate [db:seed] php artisan --env=[環境名] db:seed こんな感じです。