gpt4 book ai didi

php - Laravel 5 设置多组环境变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:02 25 4
gpt4 key购买 nike

编辑: 这个问题最初适用于测试,但本质上我想知道是否可以有多个 .env 文件来定义多组环境变量;很像 L4 如何使用 env.local.phpenv.testing.php


我正在使用 Laravel 5 并在 homestead box 上进行开发。

我的 .env 文件填充了我的本地环境变量(mysql 数据库等)。

我希望使用 sqlite 数据库进行测试,所以我在 phpunit.xml 中添加了一些变量,所以它看起来像这样:

<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="DB_DRIVER" value="sqlite" />
<env name="DB_PATH" value="database.sqlite" />
</php>

配置文件中引用了所有适当的环境变量,例如环境('DB_DRIVER')

然而,当我尝试使用 php artisan migrate --env=testing 迁移数据库时,我得到“nothing to migrate”提示 Laravel 正在尝试迁移我的本地 (mysql) 数据库(这是已经迁移)。

我决定通过 tinker 进一步探索,所以我运行了 php artisan tinker --env=testing。在 tinker 中,我运行 app()->environment(); 返回“testing”。到目前为止一切顺利!

接下来,我通过 $_ENV 回显了环境变量,它返回了我的local 环境变量,尽管环境被设置为测试。

这是为什么?看起来 Laravel 忽略了 phpunit.xml env 变量,只是使用 .env 文件,不管......

编辑

如果通过 phpunit 本身运行,laravel 似乎只使用 phpunit.xml 文件,即使环境设置为单独测试也是如此。

如果有人知道如何在 L5 中设置多个环境,我将不胜感激,因为仅制作 .env.testing 文件的 L4 方式行不通。

最佳答案

原始问题的快速解决方法,只是 testing 环境案例,是从 tests 调用 $this->artisan('migrate');/TestCase.php 类,因此它将获取 phpunit.xml 中定义的数据库配置值并执行迁移。

关于php - Laravel 5 设置多组环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com