Posted at

Laravelの.envファイル運用


はじめに

ちょっとしたツール開発に参加しLaravel触ることになりまして...

開発環境や検証環境など各環境を用意するにあたり.envファイルの取り扱いどうしたもんかと思い、やったことまとめました。


.envファイル運用

まず.envはDBの接続情報など重要情報を抱えるためバージョン管理に含めるべきではないです。

なぜ最初に書いたかというと、私が参加した時には.envがバージョン管理されてたからです...

.gitignoreには記載されていたので何故と思いつつもバージョン管理から外すことにしました。

公式ドキュメントにも以下注意喚起があります。


.envファイルは、アプリケーションのソースコントロールに含めるべきでありません。各ユーザー/サーバは異なった環境設定が必要だからです。さらに、侵入者がソースコントロールリポジトリへアクセスすることが起きれば、機密性の高い情報が漏れてしまうセキュリティリスクになります。


.envをバージョン管理から外しましたが、このままでは他の方が.envに何を記載すべき不明なため何かしら雛形が必要だと思いました。

今回の場合はシンプルに.env.exsampleを作成し、ローカル環境の設定値を参考用として記載しました。

このファイルはバージョン管理に含めることにしました。

(余談ですが、ファイル名を.env.testingとすると、PHPUnitのテスト時に.envをオーバーライドしてくれるようです。)

雛形ができれば、あとは各環境ごとに.env.exsampleから.envを作成し、必要な値で上書きすれば良いです。

当たり前のことしか書いてないのですが、当初は設定ファイルを複数用意して、各環境ごとに読み込む設定ファイルを変えるみたいな少しめんどいことを考えてました。各環境毎に.envが1つあって必要な環境設定がそこにまとまってあるのがシンプルで良いかなと思いました。