イントロダクション
Laravelフレームワークの全設定ファイルはapp/config
ディレクトリーの中に設置されています。全ファイル中の、それぞれのオプションにコメントが入っています。自由にご覧になり、用意されたオプションを理解してください。
実行中に設定値へアクセスする必要が起きることもあるでしょう。Config
クラスを使ってください。
設定値へアクセスする
Config::get('app.timezone');
設定オプションが存在しない場合、指定したデフォルト値を返すようにすることも可能です。
$timezone = Config::get('app.timezone', 'UTC');
設定値をセットする
「ドット(ピリオド)」スタイルの記法で様々なファイルの設定値にアクセスできることに注目してください。また、実行時に設定値をセットすることもできます。
Config::set('database.default', 'sqlite');
設定値はこのリクエストの実行時間の間のみ保持されます。次のリクエストに持ち越されることはありません。
環境の設定
アプリケーションを実行している環境に基づいて、異なった設定値を使用できれば、多くの場合に役立つでしょう。例えば、実働サーバーと開発マシーンでは、別のキャッシュドライバーを使用したい場合です。これは簡単に実現でき、設定に基づいた環境を使用できます。
local
のような環境名と同じディレクトリーをconfig
ディレクトリーに作成してください。続いて、その環境でオーバーライドしたい特定のオプションを指定した、環境ファイルを作成します。例えば、ローカル環境のキャッシュドライバーをオーバーライドしたければ、app/config/local
に次の内容のcache.php
ファイルを作成してください。
<?php
return array(
'driver' => 'file',
);
注目:
testing
を環境名として使用しないでください。これはユニットテストのための予約名です。
元となる設定ファイルの全てのオプションを指定する必要はなく、オーバーライドしたいものだけで良いことに注意してください。環境による設定ファイルは元となるファイルを「カスケード(cascade)」形式でオーバーライドします。
次にフレームワークにどの動作環境で動いているのかを教える必要があります。デフォルトの環境はproduction
です。しかしながら、インストールした一番上の階層にあるbootstrap/start.php
ファイルで、他の環境を設定することができます。このファイルの中に$app->detectEnvironment
の呼び出しを見つけてください。現在の環境を決定するための配列をこのメソッドに渡しています。必要であれば他の環境とマシーン名を配列に追加してください。
<?php
$env = $app->detectEnvironment(array(
'local' => array('your-machine-name'),
));
この例で、'local'は環境の名前、'your-machine-name'はサーバーのホスト名を指します。LinuxとMacで、ホスト名はhostname
端末コマンドで調べられます。
環境の決定を更に柔軟に行いたい場合は、detectEnvironment
メソッドにクロージャーを渡し、お好きな方法で環境の決定コードを実装してください。
$env = $app->detectEnvironment(function()
{
return $_SERVER['MY_LARAVEL_ENV'];
});
現在のアプリケーションの環境にアクセスする
現在のアプリケーションの環境にはenvironment
メソッドによりアクセスできます。
$environment = App::environment();
'environment`メソッドに引数を渡すことで、指定した値の環境であるかを確認することができます。
if (App::environment('local'))
{
// 環境はlocal
}
if (App::environment('local', 'staging'))
{
// 環境はlocalかstaging
}
プロバイダー設定
動作環境による設定の使い分けを使用している場合、メインのapp
設定ファイルに、環境ごとのサービスプロバイダーを追加(append)したいこともあるでしょう。しかしながら、この方法では、環境ごとのapp
ファイルに指定した内容が、メインのapp
設定ファイルをオーバーライトしてしまうことに、注意してください。プロバイダーを強制的に追加したい場合は、append_config
ヘルパメソッドをその環境のapp
設定ファイルで使用してください。
'providers' => append_config(array(
'LocalOnlyServiceProvider',
))
機密な設定の保護
「現実の」アプリケーションでは、機密扱いの設定を全部、設定ファイルより外しておくことは、賢明な手法です。データーベースのパスワードやStripeのAPIキー、暗号化のキーは、できるのであればいつでも、設定ファイルから外しておきましょう。では、どこに置くのが良いのでしょうか?ありがたいことに、Laravelは「ドット」ファイルを使用し、これらの設定項目を保護する、シンプルな解決策を提供しています。
最初に、アプリケーションの設定で、開発機をlocal
環境として認識させます。次に、.env.local.php
ファイルをプロジェクトのルート、通常はcomposer.json
ファイルが存在するディレクトリーへ、設置します。.env.local.php
ファイルは、典型的なLaravelの設定ファイルと同様に、キー/値のペアの配列を返す必要があります。
<?php
return array(
'TEST_STRIPE_KEY' => 'super-secret-sauce',
);
このファイルから返されたキー/値のペアは全部、自動的に$_ENV
と$_SERVER
のPHP「スーバーグローバル」を通じてアクセスできるようになります。次に、このグローバルで参照できる値を、設定ファイルで指定してください。
'key' => $_ENV['TEST_STRIPE_KEY']
.env.local.php
ファイルを確実に.gitignore
ファイルに追加してください。これにより、あなたのチームメンバーは、自分自身のローカル環境設定を作成でき、それと同時に、ソースコントロールから、機密の設定アイテムを隠すことが可能になります。
次に実働サーバーで、.env.php
ファイルをプロジェクトルートに作成し、実働環境に適した値を指定してください。.env.local.php
ファイルと同様に、実働の.env.php
ファイルはソースコントロールから除外すべきでしょう。
注目:アプリケーションがサポートする環境ごとに、このファイルを作成することができます。例えば、development
環境では、.env.development.php
ファイルが存在すれば、ロードされます。production
環境の場合は、常に.env.php
ファイルが使用されます。
メンテナンスモード
アプリケーションがメンテナンスモードの場合、アプリケーションで指定した全ルートでカスタムビューを表示する必要があります。これにより、アップデートやメンテナンスを実行する時、簡単にアプリケーションを「停止」させることができます。app/start/global.php
ファイルの中でApp::down
メソッドを呼び出しています。アプリケーションがメンテナンスモードの場合、このメソッドからのレスポンスがユーザーに送信されます。
メンテナンスモードへ切り換える場合は、シンプルにdown
Artisanコマンドを実行してください。
php artisan down
メンテナンスモードを解除する場合は、up
コマンドを使用します。
php artisan up
アプリケーションがメンテナンスモードの時にカスタムビューを表示したい場合は、app/start/global.php
へ以下のように指定してください。
App::down(function()
{
return Response::view('maintenance', array(), 503);
});
down
メソッドに渡されたクロージャーがNULL
をリターンする場合、そのリクエストではメンテナンスモードが無視されます。
メンテナンスモードとキュー
アプリケーションがメンテナンスモードの場合、キューのジョブは処理されません。メンテナンスモードが解除され、アプリケーションが通常モードになった時点で、処理が続けられます。