Laravel无法从不同的环境文件中读取环境变量。
Laravel无法从不同的环境文件中读取环境变量。
升级从5.0到5.8之后,Laravel在环境变量与.env文件不同时停止读取环境变量。\n例如,如果我有一个包含USE_SSL=true
的.env
文件。\nenv(\'USE_SSL\')
将为true。\n但是,如果我有一个指向另一个环境的.env
文件:\nAPP_ENV=dev
\n然后我将有一个包含USE_SSL=true
的.env.dev
文件,env(\'USE_SSL\')
将为null。\n
- \n
- 我尝试了
composer dump-autoload
、php artisan config:clear
和php artisan config:cache
,但没有成功。无论是缓存还是非缓存,我都无法获取值。 - 我尝试将文件命名为
.dev.env
和.env.dev
,但没有成功。
\n
\n
\n如果有任何想法,将不胜感激。
问题的原因是:.env文件不是.ini文件,所以使用parse_ini_file可能会导致问题;提出的方法不能填充环境变量;方法只适用于指定的单个路由。
问题的解决方法是:使用phpdotenv包来加载.env文件,并在本地开发服务器的主.env文件中放置开发特定设置。
参考文章中提供了使用phpdotenv包来加载自定义.env文件的解决方案,并建议将开发特定设置放在主.env文件中。
最后,文章指出问题本身是基于对.env文件使用的误解,每台计算机(本地开发或服务器)都有自己的.env文件。解决开发特定设置的方法是将它们放在开发服务器上的主.env文件中。
文章的结论是,从laravel文档中可以学到.env文件只是用于处理配置,没有.env文件,我们必须手动在每个配置文件中写入值。最后询问是否关闭该问题,因为我们应该始终覆盖和扩展框架提供的默认方法。