默认情况下,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升级您的应用程序:
- 从仓库中复制 bootstrap.php
- 从存储库中复制 index.php,或更新您的 index.php,使其与要求
bootstrap.php
的那个相匹配(以防您的 index.php 对其进行了修改)< - 对于您的
console
脚本(如果存在)也是如此。 - 更新你的主.gitignore
- 重命名/移动/删除您现有的
.env
文件。
关于php - 如何在不使用 DotEnv 的情况下在 Symfony 应用程序中定义 APP_ENV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55926140/