【问题标题】:How to define APP_ENV within the Symfony app without using DotEnv?如何在不使用 DotEnv 的情况下在 Symfony 应用程序中定义 APP_ENV?
【发布时间】:2019-09-19 10:08:42
【问题描述】:

默认情况下,Symfony 需要在 Web 服务器上而不是在应用程序中设置配置。就我而言,在服务器上设置这些变量非常复杂。所以,我想要的是在应用程序(php 或 yaml)中设置这些变量没有 DotEnv 和 Web 服务器环境变量。

这些是我需要定义的环境变量:

APP_ENV 
APP_SECRET
DATABASE_URL
MONGODB_URL
MAILER_URL

这是我发现的,除了在任何地方都不起作用的 APP_ENV:

APP_ENV: ???
APP_SECRET: config/packages/framework.yaml
DATABASE_URL: config/packages/doctrine.yaml
MONGODB_URL: config/packages/doctrine_mongodb.yaml
MAILER_URL: config/packages/swiftmailer.yaml

我们在 Symfony 4 中在哪里定义 APP_ENV?

【问题讨论】:

  • 我认为您别无选择,只能将其硬编码到 config/bootstrap.php 中。

标签: php symfony


【解决方案1】:

您可以使用.env.local.php 返回一个数组。

这个文件通常是通过运行composer dump-env [env] 生成的,但没有什么能阻止你手动创建它。

该文件在在 DotEnv 加载“.env”文件之前加载,它是一个与$_SERVER 和$_ENV 合并的简单数组。如果此文件存在,则根本不使用DotEnv 组件。

例如你可以返回类似的东西:

return [
  'APP_ENV'           => 'prod',
  'APP_SECRET'        => 'verysecretmuchobscure',
  'CORS_ALLOW_ORIGIN' => '^https?://localhost(:[0-9]+)?$',
  'DATABASE_URL'      => 'mysql://db_user:db_password@127.0.0.1:3306/db_name',
  'JWT_SECRET_KEY'    => '%kernel.project_dir%/var/keys/private.pem',
  'JWT_PUBLIC_KEY'    => '%kernel.project_dir%/var/keys/public.pem',
  'JWT_PASSPHRASE'    => 'anotherthing',
];

如果您使用的是 Symfony 4.1+,所有这些都适用。在您的问题中您说的是 Symfony 4,但不要指定您使用的是哪个次要版本。

如果您使用的是 4.0,则需要按照here 详细说明的步骤来升级您的应用程序:

  1. 从 repo 复制 bootstrap.php
  2. 从 repo 中复制 index.php,或更新您的 index.php,使其在要求 bootstrap.php 方面匹配(以防您的 index.php 对其进行了修改)
  3. console 脚本也一样(如果存在)。
  4. 更新您的主 .gitignore
  5. 重命名/移动/删除您现有的.env 文件。

【讨论】:

  • 有趣。我不知道 bootstrap.php 已重新添加。如果有人感兴趣,这里有一些 more details。
  • @yivi 这就是我正在寻找的答案。但是,它缺少有关如何加载和使用 .env.local.php 文件的详细信息,因为我使用的 Symfony 4.0 没有 bootstrap.php。
  • @Cerad 你提供了一个更完整的参考,我实际上是从你的评论中发现的,而不是来自 yivi 的答案。它提供了有关如何在 2018 年 11 月之前从 Symfony 更新的说明,而来自 yivi 的答案仅适用于 2018 年 11 月之后的 Symfony。如果您将其作为答案发布,我会接受您的答案。
  • 抱歉@Darith,您没有在 Q 中指定 4 .0,我以为您指的是最新的 Symfony 4 版本。自 4. 1 以来,这一直是 Symfony 的一部分。无论如何,我都会在答案中包含升级信息的链接。
  • @yivi,我下次提问时会更具体一些,谢谢。
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 2016-05-07
  • 2015-08-17
  • 2015-07-06
相关资源
最近更新 更多