使用多个env文件

apo*_*fos 3 laravel-5 phpdotenv

我想知道Laravel是否有办法指定要加载的一组env文件.我确切的问题是,我想补充一点像一个后缀为我所有.js.css资源.理想情况下,我有一个类似于发布日期的后缀,因为这些文件可以在同一版本中缓存,但我希望缓存在下一个版本中失效.但是我希望尽可能避免读取,修改和保存.env文件,而是希望创建一个新文件,例如.env.rdate通过脚本生成的文件,例如

echo APP_RELEASE_DATE=`date +%s` > env.rdate
Run Code Online (Sandbox Code Playgroud)

或类似的东西.这是完全可能的,还是我必须读取/更新/写入.env文件?

小智 8

在.env文件旁边创建.env.rdate文件.

把它放到你的AppServiceProvider启动方法:

    $dotenv = new \Dotenv\Dotenv(base_path(),'.env.rdate');
    $dotenv->overload(); 
Run Code Online (Sandbox Code Playgroud)

在您的项目中使用之后:ENV('APP_RELEASE_DATE')

  • 如果你想让环境变量在你的 app.php 配置文件中可用,那么在 app.php 的最开始而不是在 AppServiceProvider 中添加这两行(因为 app.php 配置文件在 boot 方法之前执行在 AppServiceProvider 中) (2认同)
  • 这个答案对于 laravel 版本 5 - 5.7 是正确的,但自版本 5.8 Laravel 开始使用 phpdotenv 3 ,需要创建为 `\DotEnv\DotEnv::create(base_path(), '.env.rdate');` 而不是使用“新”。 (2认同)