Laravelの環境設定ファイルを整備してサイト作成の準備を行う
Laravelの環境設定ファイル.envにはアプリケーション名やデータベースへの接続情報、ログ取得のレベル等を設定して使用します。
これらのログレベルやDBの接続情報などは開発、ステージング、本番などの環境により分けておくと便利ですので、環境設定ファイル(.env)はそれぞれの環境用のものを用意すると良いでしょう。
開発用の環境設定ファイルとして.envをコピーして.env.devを、同様にステージングを.env.stgなどとして作成した場合、環境変数のAPP_ENVに値を設定することで切り替えが可能です。
WebサーバーがApacheであればhttpd.confや.htaccessに、Nginxであればnginx.confなどの設定ファイルに環境変数を設定します。
それぞれの書き方の詳細には触れませんが、例として.env.devを使いたい場合に.htaccessの場合は以下のように記述します。
SetEnv APP_ENV dev
環境設定ファイルに書いた値の使い方(取り出し方)
.envに書いた設定はコントローラー等から直接呼び出せないことはありませんが、一度configディレクトリ内のスクリプトを通して読みだすというのがお作法となっています。
config内に新たに読出し用のphpを作っても良いですが、config/app.phpに情報を追加するのが楽だと思います。
例えば.envにCOPYRIGHTとして著作権表記を設定できるようにした場合、config/app.phpのreturn配列内に
'copyright' => env('COPYRIGHT', null),
と書くことで、コントローラーからは
config('app.copyright', '')
のように、blade(view)からは
{{ config('app.copyright', '') }}
のように呼び出して使うことが可能です。
環境設定ファイルに配列を書きたい場合
少し変わった使い方ですが、環境設定ファイルに配列を設定したいケースというのもあるかもしれません。
私の場合は対向システムからアクセスされる際の許可IPを書いたりするのに使っていますが、以下のような呼び出し方をしています。
ALLOW_IPS=["127.0.0.1","192.168.0.1"]
これをconfig/app.phpで以下のように呼び出します。
'allow_ips' => json_decode(getenv('ALLOW_IPS'), true),
そしてコントローラーからは、定数IP_ADDRに入れたアクセス元IPが許可IPにあるかどうかを判定するような書き方をしています。
if(empty(config('app.allow_ips')) || !in_array(IP_ADDR,config('app.allow_ips'))) abort(403);
最後少し話がそれましたが、環境ごとに環境設定ファイルを作って運用する方法をご紹介しました。