Symfony找不到秘密环境变量

时间:2020-04-03 16:34:47

标签: php symfony environment-variables symfony5

我正在尝试在Symfony 5中设置一个秘密管理员。我遵循了此Secrets Management Setup课程和How to Keep Sensitive Information Secret文档。

我的应用正在触发:

Fatal Error: Maximum execution time of 30 seconds exceeded
Environment variable not found: "DATABASE_URL".

正如文档所述,我从DATABASE_URL中删除了.env并使用了php bin/console secrets:set DATABASE_URL,其输出为:

 [OK] Sodium keys have been generated at "config/secrets/dev/dev.*.public/private.php".


 !
 ! [CAUTION] DO NOT COMMIT THE DECRYPTION KEY FOR THE PROD ENVIRONMENT⚠️
 !


 [OK] Secret "DATABASE_URL" encrypted in "config/secrets/dev/"; you can commit it.

这是php bin/console secrets:list的结果:

 // Use "%env(<name>)%" to reference a secret in a config file.
 ------------------- -------- -------------
  Secret              Value    Local Value
 ------------------- -------- -------------
  DATABASE_URL        ******
 ------------------- -------- -------------

这是我在%env%中使用config/packages/doctrine.yaml的方式:

doctrine:
    dbal:
        # ...
        url: '%env(DATABASE_URL)%'
        # ...

我正在使用PHP 7.2.21并遵循文档:

The Secrets系统需要与PHP 7.2捆绑在一起的Nadium PHP扩展。如果您使用的是较早的PHP版本,则可以安装libsodium PHP扩展或使用 paragonie / sodium_compat 软件包。

Symfony控制台仍然要求我安装paragonie/sodium_compat polyfill,我做了什么。

我的应用程序不再起作用。我想念什么?

更新#1

事实证明,问题出在paragonie / sodium_compat软件包中。 Fatal Error: Maximum execution time of 30 seconds exceeded之前的最后一条调试消息是:

timeParagonIE_Sodium_Core_Util::mul() vendor/paragonie/sodium_compat/src/Core/Curve25519.php:756

因此Symfony无法获取环境变量并触发错误。

然后我尝试解密秘密并将其存储在.env.dev.local中,以避免使用此命令在每次请求时解密它们:

 php bin/console secrets:decrypt-to-local --force

但是Symfony会继续对其解密,并且不使用.env.dev.local

0 个答案:

没有答案