我有一个 Symfony 5.1.8 项目,我想在其中使用不同的数据库连接进行测试。为此,我将文件设置为与 my 中.env.test.local
的值不同的值,就像文件中的文档状态一样:DATABASE_URL
.env.local
.env
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env.local contains default values for the environment variables needed by the app
# * .env.local.local uncommitted file with local overrides
# * .env.local.$APP_ENV committed environment-specific defaults
# * .env.local.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env.local files.
Symfony 似乎忽略了这些覆盖并且总是使用.env.local
.
为了找出到底发生了什么,我将最后一行bin/console
从$application->run($input);
to更改dd($_ENV);
为只是转储 symfony 在执行期间看到的任何环境变量。
以下是我的不同.env
文件的内容:
.env
APP_ENV=dev
ENV_VAR=ENV
.env.local
APP_ENV=dev
ENV_VAR=ENV_LOCAL
.env.test
APP_ENV=test
ENV_VAR=ENV_TEST
.env.test.local
APP_ENV=test
ENV_VAR=ENV_TEST_LOCAL
当我php bin/console
现在运行时,输出如下:
array:10 [
"APP_ENV" => "dev"
"ENV_VAR" => "ENV_LOCAL"
...
]
这是我所期望的。但是当我运行时php bin/console -e test
,正在打印以下内容:
array:10 [
"APP_ENV" => "test"
"ENV_VAR" => "ENV_LOCAL"
...
]
APP_ENV
根据-e
参数正确设置,但仍然ENV_VAR
是取值 from .env.local
。
我是否对.env
-files 及其行为有误解,或者这是某种错误?
万一这很重要,我目前正在使用 PHP 7.3.24 在 Windows 10 上工作。