使用多个 env 文件

Posted

技术标签:

【中文标题】使用多个 env 文件【英文标题】:Use multiple env files 【发布时间】:2017-06-16 23:11:36 【问题描述】:

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

echo APP_RELEASE_DATE=`date +%s` > env.rdate

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

【问题讨论】:

【参考方案1】:

在 .env 文件旁边创建您的 .env.rdate 文件。

把这个放到你的 AppServiceProvider 启动方法中:

    $dotenv = new \Dotenv\Dotenv(base_path(),'.env.rdate');
    $dotenv->overload(); 

你可以在你的项目中使用之后:

ENV('APP_RELEASE_DATE')

【讨论】:

如果您希望环境变量可用于您的 app.php 配置文件,则将这两行添加到 app.php 的最开头而不是 AppServiceProvider 中(因为 app.php config文件在AppServiceProvider中的booth方法之前执行) 这个答案对于 laravel 版本 5 - 5.7 是正确的,但是从 5.8 版本开始,Laravel 一直在使用 phpdotenv 3,它需要创建为 \DotEnv\DotEnv::create(base_path(), '.env.rdate'); 而不是使用 new

以上是关于使用多个 env 文件的主要内容,如果未能解决你的问题,请参考以下文章

来自 docker-compose .env 文件的多个 Docker 构建参数

spring boot 配置多个yaml文件并根据env参数加载

rustdiesel-cli 为不同环境设置多个 env 文件

如何在 GitHub Actions 中使用 env 文件?

Laravel 配置连接多个数据库以及如何使用

vue cli4配置多个baseUrl环境,axios涉及多个请求域的情况