転載する場合は明記してください: Yuansir-web 初心者 | LAMP 学習ノートより転載
この記事のリンクアドレス: Laravel は異なる環境で異なる設定ファイルを呼び出します
Laravel は異なる環境で異なる設定ファイルをどのように呼び出しますか?コミュニティではこの質問をする人がたくさんいます。これをエレガントな方法で実装するには、通常、環境変数を設定するか、環境値を .env ファイルに書き込むという 2 つの方法を使用します。これがエレガントであるかどうかはわかりません。もっとエレガントな方法がある場合は、教えてください。
1. 環境変数を設定します。たとえば、ローカル開発とオンラインの 2 つの環境があります。
ローカルで php-fpm を設定します (たとえば、Apache の代わりに php-fpm を使用します)。たとえば、環境変数は DEV_ENV で、php-fpm.conf
env[DEV_ENV]=local
を変更してから、ローカル システム
echo "export DEV_ENV=local" >> /etc/profilesource /etc/profile
の環境変数を設定して、Laravel に対応する設定ファイルを作成し、次のコードを bootstrap/app に追加します。 .php
$environment = getenv('DEV_ENV') ? '.' . getenv('DEV_ENV') : '';$app->loadEnvironmentFrom('.env'.$environment);
で、laravel プロジェクトに .env.local を作成します。設定はローカル開発環境の設定であり、.env はもちろん、実際の状況に応じて、.env.develop、.env.preview などの他の構成ファイルを作成することもできます。環境変数に基づいて呼び出されます。この方法の利点は、オンラインになった後にプロジェクトをセットアップする必要がないことです。DEV_ENV 環境変数はオンラインで構成されていないため、オンライン プロジェクトは .env
< の構成を自動的に呼び出します。 🎜> 2. .env に現在の環境の名前を書き込みます。たとえば、ローカル開発環境と現在オンラインの 2 つの環境があります。
.env ファイルをクリアし、現在の実行環境のみをファイルに書き込みます。最初の行 (local
など) 次に、新しい .local.env と .production.env を作成し、ローカル構成項目とオンライン構成項目をそれぞれ書き込みます
次のコードを bootstrap/app.php に追加します
$env = $app->detectEnvironment(function () { $environmentPath = __DIR__ . '/../.env'; $setEnv = trim(file_get_contents($environmentPath)); if(file_exists($environmentPath)) { putenv("APP_ENV=$setEnv"); if(getenv('APP_ENV') && file_exists(__DIR__ . '/../.' . getenv('APP_ENV') . '.env')) { Dotenv::load(__DIR__ . '/../', '.' . getenv('APP_ENV') . '.env'); } }});
もっとエレガントな方法があればアドバイスをお願いします。