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

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

WBOY
リリース: 2016-06-20 12:41:25
オリジナル
1067 人が閲覧しました

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート