php - Laravel php artisan serve 不尊重 env 标志
问题描述
我正在开发一个 Laravel 项目并尝试集成 Laravel Scout。对于黄昏测试,我创建了一个 .env.dusk.local 环境文件,用于测试。但是当我尝试运行php artisan serve --env=dusk.local
它时,它只运行默认的 .env 文件。所有其他 .env 文件也不起作用。
我使用 Laravel 8.15.0。我也尝试清除配置缓存,但没有任何改变。
我目前没有想法,所以希望有人可以帮助我。
解决方案
如果你看到 laravel 黄昏文档,你会发现你不需要让你单独的黄昏 env 文件替换原始文件,一旦测试完成,它会自动恢复它。
运行测试时,Dusk 将备份您的 .env 文件并将您的 Dusk 环境重命名为 .env。测试完成后,您的 .env 文件将被恢复。
如果还是不行
由于vlucas/phpdotenv
'方法'load()',您可以手动设置环境,
<?php
namespace Tests\Browser;
use App\Models\User;
use Laravel\Dusk\Chrome;
use Tests\DuskTestCase;
class ExampleTest extends DuskTestCase
{
private function setEnv(){
$env_name = "dusk.local";
if (isset($env_name)) {
// Immutability refers to if Dotenv is allowed to overwrite existing environment variables. If you want Dotenv to overwrite existing environment variables, use createMutable instead of createImmutable(from vlucas/phpdotenv repo)
$dotenv = \Dotenv\Dotenv::createImmutable(base_path(), '.env.'.$env_name);
try {
$dotenv->load();
} catch (\Dotenv\Exception\InvalidPathException $e) {
$e->getTraceAsString();
}
}
}
public function testBasicExample()
{
$this->setEnv();
}
}
推荐阅读
- javascript - sapui5 - 为 smartTable 实现自定义排序器
- php - 如何使用用户名检查电话号码和密码以输入我的帐户?laravel8x
- docker - 如何恢复 docker 容器数据
- php - 在 AWS S3 中将多个文件从一个存储桶复制到另一个存储桶的最佳方法是什么?
- azure - 如何在 Azure 中获取多会话 VM 的用户级 CPU 利用率
- python - 将文本文件转换为十六进制 - 换行问题
- ssis - 一次处理多个 SSAS 多维数据集
- python - 将命令行命令转换为通常的 python 字符串
- reactjs - 在反应中克隆 github 项目
- javascript - 如何为多次使用相同钩子的屏幕创建测试?反应测试库