イントロダクション

Laravelフレームワークの前設定ファイルは、configディレクトリに保存されています。各オプションには詳しいコメントが付いているので、各ファイルを一読し、使用できるオプションを把握しておきましょう。

設定値へのアクセス

アプリケーションのどこからでも、設定値へはグローバルconfigヘルパー関数を使用し、簡単にアクセスできます。設定値にはアクセスしたい値を含んだファイル名とオプション名で構成された、「ドット」記法でアクセスできます。デフォルト値も指定でき、設定オプションが存在しない場合に返されます。

$value = config('app.timezone');

実行時に設定値を指定したい場合、configヘルパーに配列を渡します。

config(['app.timezone' => 'America/Chicago']);

環境設定

アプリケーションを実行している環境にもとづき、別の設定値に切り替えられると便利です。たとえば、ローカルと実働サーバでは、異なったキャッシュドライバを使いたいと思うでしょう。

これを簡単にできるようにするために、LaravelではVance Lucas氏により作成された、DotEnv PHPライブラリーを使用しています。新たにLaravelをインストールすると、アプリケーションのルートディレクトリには、env.exampleファイルが含まれています。ComposerによりLaravelをインストールした場合は自動的に、このファイルは.envに名前が変更されます。Composerを使わずにインストールした場合は、名前を変更してください。

環境設定の取得

このファイルにリストしている値は、アプリケーションがリクエストを受け取った時点で、$_ENV PHPスーパーグローバル変数へロードされます。しかし、設定ファイルの変数をenvヘルパーを使用して、値を取得できます。実際にLaravelの設定ファイルを見てもらえば、このヘルパーで多くのオプションが使われているのに気がつくでしょう。

'debug' => env('APP_DEBUG', false),

env関数の第2引数は「デフォルト値」です。この値は指定したキーの環境変数が存在しない場合に返されます。

.envファイルをアプリケーションのソース管理に含めてはいけません。アプリケーションの各開発者/サーバで異なった環境設定が必要になるからです。

チーム開発を行っている場合、.env.exampleファイルをアプリケーションに含めたいと思うでしょう。サンプルの設定ファイルに、プレースホルダーとして値を設定しておけば、チームの他の開発者は、アプリケーションを実行するために必要な環境変数をはっきりと理解できるでしょう。

現在環境の決定

現在のアプリケーション環境は、.envファイルのAPP_ENV変数により決まります。APPファサードenvironmentメソッドにより、この値へアクセスできます。

$environment = App::environment();

指定した値と一致する環境であるかを確認するために、environmentメソッドへ引数を渡すこともできます。必要であれば、複数の値をenvironmentメソッドへ渡せます。値のどれかと一致すれば、メソッドはtrueを返します。

if (App::environment('local')) {
    // 環境はlocal
}

if (App::environment('local', 'staging')) {
    // 環境はlocalかstaging
}

設定 Caching

アプリケーションをスピードアップさせるために、全設定ファイルを一つのファイルへまとめる、config:cache Artisanコマンドを使ってください。これによりアプリケーションの全設定ファイルのオプションが、単一のファイルに結合され、素早くロードできるようになります。

通常は開発ルーティンの一環として、php artisan config:cacheコマンドを実行すべきでしょう。アプリケーション開発時は、しばしば設定が変更されるでしょうから、ローカルでの開発中にこのコマンドを実行してはいけません。

メンテナンスモード

アプリケーションをメンテナンスモードにすると、アプリケーションに対するリクエストに対し、すべてカスタムビューが表示されるようになります。アプリケーションのアップデート中や、メンテナンス中に、アプリケーションを簡単に「停止」状態にできます。メンテナンスモードのチェックは、アプリケーションのデフォルトミドルウェアスタックに含まれています。アプリケーションがメンテナンスモードの時、ステータスコード503でMaintenanceModeException例外が投げられます。

メンテナンスモードにするには、down Artisanコマンドを実行するだけです。

php artisan down

downコマンドには、messageretryオプションを付けることもできます。messageの値はカスタムメッセージを表示、もしくはログするために使用し、retryの値はHTTPヘッダのRetry-Afterとしてセットされます。

php artisan down --message='Upgrading Database' --retry=60

メンテナンスモードから抜けるには、upコマンドを使います。

php artisan up

メンテナンスモード Response Template

メンテナンスモードレスポンスのデフォルトテンプレートは、resources/views/errors/503.blade.phpです。アプリケーションの必要に合わせ、自由に変更してください。

メンテナンスモード & Queues

アプリケーションがメンテナンスモードの間、キューされたジョブは実行されません。メンテナンスモードから抜け、アプリケーションが通常状態へ戻った時点で、ジョブは続けて処理されます。

メンテナンスモードの代替

メンテナンスモードでは、アプリケーションがその間ダウンタイムになってしまいますので、Laravelでの開発でゼロダウンタイムを実現するEnvoyerのような代替サービスを検討してください。