我的项目有问题,从一开始似乎就没有考虑 .env.local 。我的 .env 是这样的:
APP_ENV=
APP_SECRET=secret
###> symfony/mailer ###
# MAILER_DSN=smtp://localhost
[email protected]
MAILER_URL=sendmail://localhost
###< symfony/mailer ###
###> symfony/ldap ###
LDAP_HOST=
LDAP_PASS=
LDAP_BASE_DN=
LDAP_SEARCH_DN=
LDAP_UID_KEY=sAMAccountName
LDAP_FILTER=(&(objectClass=Person)({uid_key}={username}))
###< symfony/ldap ###
DATABASE_URL=mysql://root:[email protected]:3306/intranet?serverVersion=mariadb-10.3.22&charset=utf8
然后我想覆盖一些变量,所以我在 .env.local 中这样做了:
APP_SECRET=secret
###> symfony/ldap ###
LDAP_HOST="blabla"
LDAP_PASS="blabla"
LDAP_BASE_DN="blabla"
LDAP_SEARCH_DN="blabla"
###< symfony/ldap ###
但是当我尝试访问这些变量时,我会从我的 .env 中获取该变量。我已经测试了各种东西,例如没有我需要的变量的 .env 并仅在 .env.local 中定义它们,但随后出现错误:
Environment variable not found: "LDAP_HOST".
我真的不知道为什么它不起作用。正在尝试调试,非常感谢
对于 Symfony 5.4
只需在
APP_ENV=local
文件中添加 .env.local
因为在 https://github.com/symfony/dotenv/blob/7.1/Dotenv.php#L120 中,如果 env 等于
local
,它就会返回
这是如何获取该值的https://github.com/symfony/dotenv/blob/7.1/Dotenv.php#L117