Symfony 找不到秘密环境变量

Ben*_*min 5 php environment-variables symfony symfony5

我正在尝试在 Symfony 5 中设置秘密管理器。我遵循了秘密管理设置课程和如何保留敏感信息秘密文档。

\n\n

我的应用程序现在正在触发:

\n\n
Fatal Error: Maximum execution time of 30 seconds exceeded\nEnvironment variable not found: "DATABASE_URL".\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
 [OK] Sodium keys have been generated at "config/secrets/dev/dev.*.public/private.php".\n\n\n !\n ! [CAUTION] DO NOT COMMIT THE DECRYPTION KEY FOR THE PROD ENVIRONMENT\xe2\x9a\xa0\xef\xb8\x8f\n !\n\n\n [OK] Secret "DATABASE_URL" encrypted in "config/secrets/dev/"; you can commit it.\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是结果php bin/console secrets:list

\n\n
 // Use "%env(<name>)%" to reference a secret in a config file.\n ------------------- -------- -------------\n  Secret              Value    Local Value\n ------------------- -------- -------------\n  DATABASE_URL        ******\n ------------------- -------- -------------\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我如何使用%env%config/packages/doctrine.yaml

\n\n
Fatal Error: Maximum execution time of 30 seconds exceeded\nEnvironment variable not found: "DATABASE_URL".\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n

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

\n
\n\n

Symfony 控制台还是要求我安装paragonie/sodium_compatpolyfill,我就这么做了。

\n\n

我的应用程序不再工作了。我缺少什么?

\n\n

更新#1

\n\n

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

\n\n
timeParagonIE_Sodium_Core_Util::mul() vendor/paragonie/sodium_compat/src/Core/Curve25519.php:756\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以 Symfony 无法获取环境变量并触发错误。

\n\n

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

\n\n
 [OK] Sodium keys have been generated at "config/secrets/dev/dev.*.public/private.php".\n\n\n !\n ! [CAUTION] DO NOT COMMIT THE DECRYPTION KEY FOR THE PROD ENVIRONMENT\xe2\x9a\xa0\xef\xb8\x8f\n !\n\n\n [OK] Secret "DATABASE_URL" encrypted in "config/secrets/dev/"; you can commit it.\n
Run Code Online (Sandbox Code Playgroud)\n\n

但 Symfony 一直在解密并且不使用.env.dev.local.

\n