在Laravel 5中设置多组环境变量

时间:2015-04-21 21:17:52

标签: php laravel environment-variables laravel-5

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

一样

我使用Laravel 5并在宅基地上开发。

我的.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>

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

然而,当我尝试使用php artisan migrate --env=testing迁移数据库时,我得到了#34;什么都没有迁移&#34;建议Laravel尝试迁移我的本地(mysql)数据库(已经迁移)。

我决定通过修补匠进一步探索,所以我跑了php artisan tinker --env=testing。在修补程序中,我运行app()->environment();,返回&#34;测试&#34;。到目前为止一切都很好!

接下来,我通过$_ENV回显了env变量,并返回了我的本地环境变量,尽管环境设置为测试。

这是为什么?似乎Laravel无视phpunit.xml env变量而只是使用.env文件而不管...

修改

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

如果有人知道如何在L5中设置多个环境,我会很感激它,因为仅仅使.env.testing文件的L4方式无效。

1 个答案:

答案 0 :(得分:1)

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