Laravelで.envのディレクトリパス変更方法

スポンサーリンク

Laravelでパッケージサービスの開発を行っており、ベースとなるソースコードとサービス毎に対応を行うソースコードをGitのリポジトリごと分ける必要があったり、Vue.jsを使用したSPAにしたいという要望もあり、考えた結果、ベースとなるソースコードにLaravel本体を設置し、サービス毎の処理を記述するファイルをパッケージとして外部に設置するという形を取りました。
(※サービス毎の処理はあまり多くはないということなので、外部に置いて必要であれば読み込むという感じです!)
その際に、設定ファイル関連を外部のパッケージ側に設定する必要があったので、その時の対応内応として記載します。

.envの読み込み処理を確認

loadEnvironmentFromでgrep検索してみるとApplication.php内で処理されているので、このファイルを確認してみます。


# find ./ -type f |xargs grep loadEnvironmentFrom

/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:    public function loadEnvironmentFrom($file)

すると.envの読み込みパスを設定できる関数を発見!!


    public function useEnvironmentPath($path)
    {
        $this->environmentPath = $path;

        return $this;
    }

.envの読み込みパス変更

.envを置いている外部ディレクトリのパスをuseEnvironmentPathにセットすることで対応できました!
※設定はbootstrap/app.php内の$appをセット後に記述しました。


$ vi bootstrap/app.php

$envFilePath = dirname(__DIR__).'/../package/src/';
$app->useEnvironmentPath($envFilePath);

念のためコマンド実行も確認してみましたが、問題なく読み込まれました!


php artisan migrate:refresh --seed

ちなみに、.env以外の名前のファイルを読み込みたい時は「loadEnvironmentFrom」を使用します。


$envFileName = '.envTest';
$app->loadEnvironmentFrom($envFileName);

対応方法自体は意外とシンプルでした(^^;

コメント

タイトルとURLをコピーしました