【问题标题】:Laravel: Do multiple environments require multiple .env files?Laravel:多个环境是否需要多个 .env 文件?
【发布时间】:2016-08-15 07:53:55
【问题描述】:

在 Laravel 4.x 中,可以通过一个配置文件拥有一个开发和生产环境。框架会根据主机自动检测应该使用什么。

对于 Laravel 5.x,我似乎必须采取以下方法:

  • 在我的本地计算机上,根目录中有一个 .env 文件,其中包含“APP_ENV=local”和其他要在本地运行的配置文件。

  • 在我的服务器上与“APP_ENV=production”和相关设置相同。

所以如果我部署我的站点,我必须注意不要用我的本地版本覆盖服务器上的 .env 文件。

到目前为止这是正确的还是我在这里遗漏了什么?

主要目标是将敏感数据排除在版本控制之外,并将所有内容集中在一个地方。

关于这种方法的以下几点和问题尚不清楚:

  • .env 包的创建者建议不要在生产模式下使用它(来源:https://github.com/vlucas/phpdotenv)。 Laravel 中针对这个问题的解决方案是对框架中的每个设置进行硬编码,并确保 .env 文件没有部署到服务器(可能是一个巨大的安全漏洞)。

  • 如果使用上述解决方案,您将如何使敏感数据不受版本控制?

  • 假设使用了两个不同的 .env 文件(用于开发,一个用于生产模式下的服务器),这不会是生产中的性能问题,因为每个设置都是从.env 文件?

这似乎是从 4.​​x 方法的后退一步,我可以在一个地方配置和完成所有内容,无需拥有两个具有相同名称的不同文件并注意我不会混淆它们或其他东西.而且在.php中加载一个数组也比多次调用一个文件快很多。

【问题讨论】:

  • 在生产中,使用实际 environment variables。 PHPDotEnv 模拟的那些。这样在没有 .env 文件的情况下,env() 函数会读取系统提供的文件。 Further information/tutorial
  • @BenSwinburne 需要更改一些默认框架例程或函数吗?
  • 不,服务器本身具有框架可以获取的环境变量。例如,在服务器上,您通常会将它们设置在 .htaccess 文件或 Apache 中的 virualhost 指令中。这样,Apache 就可以在 PHP 的 $_ENV superglobal 中为该站点提供配置。您正在使用的env() 函数为您访问$_ENV.env 文件在开发环境中为您轻松填充 $_ENV
  • 我看不到包创建者在哪里提到不要在生产模式下使用它?!该软件包的主要目标是做到这一点 - 使用单个文件将开发与生产分开。 .env 文件默认被 .gitignore 文件排除 - 只需使用 GIT 进行部署。
  • @BenSwinburne 谢谢,这很清楚。稍后我将在您的解决方案中添加答案。

标签: php laravel configuration environment production


【解决方案1】:

是的,你是对的。对于 5.x,您必须在任何单一环境(如开发、登台、生产等)上创建完全不同的 .env 文件。这包含在 .gitignore 中,因此 git 系统不关心它。当你改变环境时,每一个操作都应该再次手工进行。

典型的过程是 ssh 到远程机器,git 克隆你的项目,composer 安装所有依赖项,然后创建一个全新的 .env 文件,你应该在其中放置有关此环境的所有专用设置。您的指南是 .env.example。

【讨论】:

    【解决方案2】:

    如果您想在 UNIX 系统中隐藏文件,只需在文件名的开头添加一个点即可。我不知道它在 Windows 系统上是如何工作的,但在 OS X 和 Unix 系统上应该隐藏该文件,以防止人们意外复制到另一个项目中。

    每个环境只能有一个 .env 文件,因此您必须登录服务器并手动添加新的 .env 文件一次。

    如果您使用 GIT 并希望阻止它被包含,只需将其添加到您的 .gitignore-file

    // filename: .gitignore
    .env
    

    【讨论】:

      猜你喜欢
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多