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)