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

har*_*ryg 5 php environment-variables laravel laravel-5

编辑:这个问题orignally适用于测试,但基本上我想知道是否有可能有多个.env文件可以定义多组环境变量; 就像L4如何做到这一点env.local.php,env.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>
Run Code Online (Sandbox Code Playgroud)

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

然而,当我尝试使用迁移数据库时,php artisan migrate --env=testing我得到"无需迁移",这表明Laravel正在尝试迁移我的本地(mysql)数据库(已经迁移).

我决定通过修补匠进一步探索,所以我跑了php artisan tinker --env=testing.在修补程序中,我运行app()->environment();了返回"测试".到现在为止还挺好!

接下来我回显了env变量via $_ENV,它返回了我的本地环境变量,尽管环境设置为测试.

为什么是这样?似乎Laravel忽略了phpunit.xml env变量,只是使用.env文件而不管......

编辑

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

如果有人知道如何在L5中设置多个环境我很感激它,因为L4方式只是使.env.testing文件不起作用.

Ale*_*dis -2

在 .env 文件中定义环境变量。例如:

DB_HOST=localhost
DB_DATABASE=database_name
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)

然后你可以使用访问这些变量

env('DB_HOST')
Run Code Online (Sandbox Code Playgroud)