Laravel无法从不同的环境文件中读取环境变量。

10 浏览
0 Comments

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

  1. 我尝试了composer dump-autoloadphp artisan config:clearphp artisan config:cache,但没有成功。无论是缓存还是非缓存,我都无法获取值。
  2. \n

  3. 我尝试将文件命名为.dev.env.env.dev,但没有成功。
  4. \n

\n如果有任何想法,将不胜感激。

0
0 Comments

问题的原因是:.env文件不是.ini文件,所以使用parse_ini_file可能会导致问题;提出的方法不能填充环境变量;方法只适用于指定的单个路由。

问题的解决方法是:使用phpdotenv包来加载.env文件,并在本地开发服务器的主.env文件中放置开发特定设置。

参考文章中提供了使用phpdotenv包来加载自定义.env文件的解决方案,并建议将开发特定设置放在主.env文件中。

最后,文章指出问题本身是基于对.env文件使用的误解,每台计算机(本地开发或服务器)都有自己的.env文件。解决开发特定设置的方法是将它们放在开发服务器上的主.env文件中。

文章的结论是,从laravel文档中可以学到.env文件只是用于处理配置,没有.env文件,我们必须手动在每个配置文件中写入值。最后询问是否关闭该问题,因为我们应该始终覆盖和扩展框架提供的默认方法。

0
0 Comments

问题出现的原因是由于在Laravel中,.env文件不应该用于动态加载不同的配置文件。根据Laravel文档的正确用法,.env文件应该用于存储环境变量。

解决方法是根据不同的环境变量动态加载不同的配置文件。在这个例子中,根据APP_ENV环境变量的值加载对应的配置文件。具体的实现是在Http/Kernel.php文件中的构造函数中进行的。首先获取APP_ENV的值,然后根据该值加载对应的配置文件。这里使用了explode函数将文件中的每一行拆分成键值对,然后根据键值对中的值构造出对应的配置文件名。

以上就是关于Laravel在不同的环境文件中无法读取环境变量的问题以及解决方法的整理。

0