はじめに
先日 LARAVELの設定はどこを変更すべきなのか を上げたばかりですが、調べてみるとオリジナル環境を構築するために皆さまあの手この手と工夫していて、やはり頭のいい人はひと味違うもんだと感心しきり。それらの先人の知恵を拝借の上、自分のやりたいことに近づける方法を模索した記録です。
自分の環境とか
- 開発環境はWSL上でnginxを常駐させてCドライブ上のLaravelアプリを読み込ませてる。
- 実行環境は社内ローカルネットワーク上のサーバ。
- DBは現在使用しているものを使用する。
なにがしたいのか
- DBの情報をデフォルト設定としてパッケージに含めたい
- 開発を進める途中で必要なデフォルト設定を追加したい
先人の方法とか
拙著にて「'/.env'をいじればいいんじゃね?」と書いたのはよいのですが、Laravel公式ドキュメントでは
「.envファイルは、アプリケーションのソースコントロールに含めるべきでありません。各ユーザー/サーバは異なった環境設定が必要だからです。さらに、侵入者がソースコントロールリポジトリへアクセスすることが起きれば、機密性の高い情報が漏れてしまうセキュリティリスクになります。」
などと書いてあり、まあ勉強不足ながらも、いや、勉強不足だからこそお作法には可能な限り従いたいと考えたわけです。それをふまえて
takaday 様著 [Laravel 5.5] 読み込む.envファイルを環境ごとに切り替える
や
Laravel使用時に困った点と対処方法
を拝見したところ、
- '.env'を複数用意する('/.env','/.env.hoge','/.env.fuga' etc)
までは共通ですが、
- 'artisan' コマンドに '--env=[環境名]' をつける( 'artisan [コマンド] --env="hoge"' とか)
- '.htaccsess' に切替設定を書込む
- '/bootstrap/app.php' に切替設定を書込む
- 必要に応じて '/.env' を丸ごと書換える
という方法があるようです。
結局
公式ドキュメント上には上記 1. の方法(とphpUnit)で切り替えること以外は、
Laravel の .env の値は config() 経由で使う。
の方法ををどうにかしてオリジナル環境設定を読み込むことができそうですが、基本は
- '/.env' を起動時に読み込んで '/config/*.php'を経由して設定を読み込む
- 作成した環境キャッシュから読み込む
のどちらかのようで、それ以外の方法はどこか公式ドキュメント外の方法をとる必要があるようです。