php - 如何在不使用 DotEnv 的情况下在 Symfony 应用程序中定义 APP_ENV?

标签 php symfony

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

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

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

最佳答案

您可以使用 .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. 从仓库中复制 bootstrap.php
  2. 从存储库中复制 index.php,或更新您的 index.php,使其与要求 bootstrap.php 的那个相匹配(以防您的 index.php 对其进行了修改)<
  3. 对于您的 console 脚本(如果存在)也是如此。
  4. 更新你的主.gitignore
  5. 重命名/移动/删除您现有的 .env 文件。

关于php - 如何在不使用 DotEnv 的情况下在 Symfony 应用程序中定义 APP_ENV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55926140/

相关文章:

php - PHP-用于刷新和访问 token 的Exchange授权代码(无cURL)

php - 如何运行YouTube视频

php - 在 php 中使用 curl 登录页面,然后访问链接 "logged in"

php - Symfony:清除 Doctrine 缓存

php - CORS header 不会在异常时随 Symfony 一起发送

php - 带有左连接的 Sql 子句导致找不到列

php - 在 MySQLi 中使用 5 INNER JOIN 可以吗?

php - 如何查看 mongo 中删除的记录?

php - Symfony,重定向到(或呈现)带有 404 状态返回码的 404 自定义错误页面

json - Doctrine查询postgres json(包含)json_array