ホームページ  >  記事  >  バックエンド開発  >  Laravel は異なる環境で異なる設定ファイルを呼び出します

Laravel は異なる環境で異なる設定ファイルを呼び出します

WBOY
WBOYオリジナル
2016-06-20 12:41:251026ブラウズ

転載する場合は明記してください: 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');        }    }});
こんな感じ .env ファイルに書かれた値を元に、対応する設定ファイルを呼び出すことができます

もっとエレガントな方法があればアドバイスをお願いします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。