Laravel - 加载不同的 .env 文件
Laravel - Load different .env file
我需要在特定条件下加载另一个名为 .env.test 的 .env 文件。
我试图通过添加
的中间件来做到这一点
app()->loadEnvironmentFrom('.env.test');
Dotenv::create(base_path(), '.env.test')->overload();
到Kernel.php的bootstrap()
方法。我还尝试为此创建一个专用中间件并将其加载为 web 中间件组中的第一个。但无论哪种方式,它都会加载标准的 .env 文件。
如果我在 /bootstrap/app.php 文件中这样做,它会起作用,但我真的不想把它放在那里。
我刚弄明白:默认的 .env 文件正在 LoadEnvironmentVariables.php.
的 bootstrap()
方法中加载
要使用 .env.test 文件,我必须在 App/Http/Kernel.php[=23= 中重构我最初的 bootstrap()
方法] 文件看起来像这样:
public function bootstrap()
{
app()->loadEnvironmentFrom('.env.test');
parent::bootstrap();
}
所以重要的部分是将 parent::bootstrap()
调用移到 loadEnvironmentFrom()
调用下方。
您可以使用导出命令创建一个名为 .env.test 的文件,而不是进行任何代码更改,您想要将此作为 .env 文件起诉使用终端
APP_ENV=local
php artisan config:cache
php artisan key:generate
下面的编辑是为了解释如何设置 .env 文件
在 Illuminate\Foundation\Application
class 中有方法 loadEnvironmentFrom
将文件作为参数并设置它,
得到$app
后可以使用bootstrap/app.php
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
在这里您将拥有 Illuminate\Foundation\Application
的实例
你可以像
一样调用 loadEnvironmentFrom 函数
$app->loadEnvironmentFrom('.env.local');
可能最好使用 Kernel.php 而不是这个,我认为 bootstrap/app.php 或 kernel.php 都不会被 [= 覆盖19=],所以在使用的时候要多做计算。我添加了这个,这样它会帮助你理解这些东西。
您可以使用 APP_ENV
加载不同的环境文件
例如,如果 APP_ENV=test
则可以加载 .env.test
。
我需要在特定条件下加载另一个名为 .env.test 的 .env 文件。
我试图通过添加
的中间件来做到这一点app()->loadEnvironmentFrom('.env.test');
Dotenv::create(base_path(), '.env.test')->overload();
到Kernel.php的bootstrap()
方法。我还尝试为此创建一个专用中间件并将其加载为 web 中间件组中的第一个。但无论哪种方式,它都会加载标准的 .env 文件。
如果我在 /bootstrap/app.php 文件中这样做,它会起作用,但我真的不想把它放在那里。
我刚弄明白:默认的 .env 文件正在 LoadEnvironmentVariables.php.
的bootstrap()
方法中加载
要使用 .env.test 文件,我必须在 App/Http/Kernel.php[=23= 中重构我最初的 bootstrap()
方法] 文件看起来像这样:
public function bootstrap()
{
app()->loadEnvironmentFrom('.env.test');
parent::bootstrap();
}
所以重要的部分是将 parent::bootstrap()
调用移到 loadEnvironmentFrom()
调用下方。
您可以使用导出命令创建一个名为 .env.test 的文件,而不是进行任何代码更改,您想要将此作为 .env 文件起诉使用终端
APP_ENV=local
php artisan config:cache
php artisan key:generate
下面的编辑是为了解释如何设置 .env 文件
在 Illuminate\Foundation\Application
class 中有方法 loadEnvironmentFrom
将文件作为参数并设置它,
得到$app
bootstrap/app.php
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
在这里您将拥有 Illuminate\Foundation\Application
的实例你可以像
一样调用 loadEnvironmentFrom 函数$app->loadEnvironmentFrom('.env.local');
可能最好使用 Kernel.php 而不是这个,我认为 bootstrap/app.php 或 kernel.php 都不会被 [= 覆盖19=],所以在使用的时候要多做计算。我添加了这个,这样它会帮助你理解这些东西。
您可以使用 APP_ENV
例如,如果 APP_ENV=test
则可以加载 .env.test
。