Laravel4、コマンド実行時の環境を設定する

タグ: Laravel4  

Artisanコマンドのいくつかは、実行時に--envで実行環境を指定しなくてはなりません。よく付け忘れて、悩むことがあります。

これは設定ファイルを環境により使い分ける場合に、必要になります。

デフォルトでは'production'(名目上、'production'だが、実際は空白)扱いとなり、app/config下の設定が使用されます。開発用に'local'環境を設定する場合、app/config/localディレクトリーを作成し、そこに開発環境用の設定を設置しておくのが、標準的な開発設定です。

開発環境の決定は、基本的にWebでアクセスした場合は、いわゆるドメイン名(使用している場合はサブドメイン名も含む)の部分をもとに判断されます。コマンドの場合は、ホスト名、ローカルマシン名です。

それらの値を、bootstrap/start.phpの中にある、以下のコードの部分で指定することで、環境を自由に設定できます。デフォルトではlocalhostlocal環境に結び付けられています。

$env = $app->detectEnvironment(array(

    'local' => array('localhost'),

));

これを例えば、Webアクセスが、'dummyapp.test'で、ホスト名がmyhost.localであれば、以下のように設定することで、環境をlocalに設定できます。

$env = $app->detectEnvironment(array(

    'local' => array('dummyapp.test', 'myhost.local'),

));

ホストマシンは、シェルがデフォルトの場合、プロンプトにデフォルトで標示される設定になっている場合が多いです。

何のことか分からなければ、端末でhostnameコマンドを実行してください。ずばり、ホスト名が表示されます。

残念ながら、hostnameが使用できない環境の場合は、以下の内容でtemp.phpを作成してください。

<?php

echo gethostname();

そして、端末でphp temp.phpを実行してください。ホスト名が表示されます。

その表示されたホスト名で、前記のようにlocalの環境になるように指定してください。もう、煩わしい思いをしなくて済みます。