はじめに
Laravelフレームワークの設定ファイルはすべてconfig/ ディレクトリに格納されています。各オプションにはコメントが付いているので、ファイルを開いて利用可能なオプションを確認してみてください。
設定ファイルでは、データベース接続情報・メールサーバー情報・アプリケーションURLや暗号化キーなど、さまざまなコア設定値を管理します。
about コマンド
about Artisanコマンドを使うと、アプリケーションの設定・ドライバー・環境の概要を確認できます。
--only オプションを使います。
config:show コマンドが便利です。
環境設定(.env)
実行環境によって設定値を切り替えたい場合がよくあります。たとえば、ローカルと本番でキャッシュドライバーを変えたいケースなどです。 Laravelはこれを簡単にするために DotEnv PHPライブラリを利用しています。新規インストール時、アプリケーションのルートディレクトリには一般的な環境変数が定義された.env.example ファイルが含まれており、インストールプロセス中に自動的に .env にコピーされます。
チームで開発する場合は、
.env.example ファイルを更新しながらリポジトリに含めておくと便利です。プレースホルダー値を設定しておくことで、チームの他の開発者がどの環境変数が必要かを明確に把握できます。環境ファイルのセキュリティ
ただし、Laravelには環境ファイルを暗号化する機能が組み込まれており、暗号化された状態であればソースコントロールに安全に保存できます。追加の環境ファイル
アプリケーション起動時、LaravelはAPP_ENV 環境変数またはCLIの --env 引数が指定されているかを確認します。指定されている場合、.env.[APP_ENV] ファイルが存在すればそれを読み込みます。存在しない場合はデフォルトの .env ファイルが使われます。
環境変数の型
.env ファイルの変数はすべて文字列として解析されますが、env() 関数からより幅広い型を返せるよう、以下の特殊な値が用意されています。
スペースを含む値を設定するにはダブルクォートで囲みます。
環境変数の取得
.env ファイルに記述したすべての変数は、リクエストを受け取ったとき $_ENV PHPスーパーグローバルに読み込まれます。設定ファイル内では env() 関数を使って値を取得できます。
現在の環境を確認する
現在の環境は.env ファイルの APP_ENV 変数で決まります。App ファサードの environment メソッドで取得できます。
環境ファイルの暗号化
暗号化されていない環境ファイルはソースコントロールに保存すべきではありませんが、Laravelには環境ファイルを暗号化する機能があります。暗号化
環境ファイルを暗号化するにはenv:encrypt コマンドを使います。
.env が暗号化され、暗号化された内容が .env.encrypted ファイルに保存されます。復号キーはコマンドの出力に表示されるので、安全なパスワードマネージャーに保存してください。
独自の暗号化キーを指定したい場合は --key オプションを使います。
指定するキーの長さは、使用する暗号化方式が要求するキー長と一致させる必要があります。デフォルトでは32文字のキーが必要な
AES-256-CBC が使われます。--cipher オプションを使えば、暗号化がサポートする任意の暗号方式を利用できます。.env と .env.staging のように複数の環境ファイルがある場合は、--env オプションで暗号化対象の環境名を指定できます。
可読な変数名(Readable Variable Names)
環境ファイルを暗号化する際、--readable オプションを使うと、値だけを暗号化して変数名は読める状態のまま残せます。
env:decrypt コマンドに追加のオプションは不要です。
--readable オプションを使用する場合、元の環境ファイルのコメントや空行は暗号化後の出力に含まれません。可読な暗号化ファイルの更新
可読な暗号化済み環境ファイルを更新する場合、Laravelは変更のない値をそのまま保持し、元の環境ファイルに存在しなくなった変数を削除します。--force オプションを使います。暗号化キーの変更や、無効になった暗号化ファイルの置き換えに利用できます。
復号
環境ファイルを復号するにはenv:decrypt コマンドを使います。このコマンドは復号キーを必要とし、Laravelは LARAVEL_ENV_ENCRYPTION_KEY 環境変数からキーを取得します。
--key オプションで渡すこともできます。
env:decrypt コマンドが実行されると、Laravelは .env.encrypted ファイルの内容を復号し、.env ファイルに書き出します。
カスタムの暗号方式を使う場合は --cipher オプションを指定します。
.env と .env.staging のように複数の環境ファイルがある場合は、--env オプションで復号対象の環境名を指定できます。
--force オプションを指定します。
設定値へのアクセス
Config ファサードまたはグローバルの config() 関数を使って、アプリケーションのどこからでも設定値にアクセスできます。「ドット記法」を使い、ファイル名とオプション名を組み合わせて指定します。
Config::set() または配列を config() に渡します。
設定のキャッシュ
アプリケーションのパフォーマンスを向上させるには、すべての設定ファイルを1つのファイルにキャッシュします。.env ファイルはフレームワークのリクエストやArtisanコマンド実行時に読み込まれなくなります。そのため env() 関数はシステムレベルの環境変数のみを返します。
キャッシュを削除するには config:clear コマンドを使います。
設定ファイルの公開
Laravelの設定ファイルの多くはすでにconfig/ ディレクトリに公開されていますが、cors.php や view.php など一部のファイルはデフォルトでは公開されていません。
未公開の設定ファイルを公開するには config:publish コマンドを使います。
デバッグモード
config/app.php の debug オプションは、エラー情報をユーザーにどの程度表示するかを決定します。このオプションはデフォルトで .env ファイルの APP_DEBUG 環境変数の値に従います。
メンテナンスモード
アプリケーションがメンテナンスモードのとき、すべてのリクエストに対してカスタムビューが表示されます。これにより、アップデート中や保守作業中にアプリケーションを一時的に「無効化」できます。メンテナンスモードの有効化
--refresh オプションを指定すると、ブラウザが指定秒数後に自動的にリロードされます。
--retry オプションは Retry-After HTTPヘッダーの値として設定されます。
メンテナンスモードのバイパス
シークレットトークンを使って特定のユーザーだけがアクセスできるようにするには--secret オプションを使います。
--with-secret オプションを使うとLaravelがトークンを自動生成します。
複数サーバーでのメンテナンスモード
デフォルトではLaravelはファイルベースでメンテナンスモードを管理します。複数サーバー構成の場合は、キャッシュベースの方法が便利です。メンテナンスビューの事前レンダリング
デプロイ中にphp artisan down を実行する場合、依存関係更新中にアクセスしたユーザーがエラーを目にすることがあります。これを防ぐには --render オプションでビューを事前レンダリングします。
メンテナンスモードの無効化
メンテナンスモードのデフォルトテンプレートは
resources/views/errors/503.blade.php を作成することでカスタマイズできます。次のステップ
ルーティング
URLとコントローラーを結びつけるルーティングの基礎を学びます。