首页 > 解决方案 > Symfony 5.3 必须定义参数“21”

问题描述

我开发了一个 symfony 项目。在开发机器上一切正常(在端口 8000 上使用 symfony 服务器)。

当我在生产服务器中克隆 git 时,出现此错误:

执行脚本缓存:清除 [KO] [KO] 脚本缓存:清除返回错误代码 1 !!!!// 使用调试清除 prod 环境的缓存!// 错误的 !!!!!!在 App_KernelProdContainer.php 第 674 行:!!!!必须定义参数“21”。!!!!!!缓存:清除 [--no-warmup] [--no-optional-warmers] !!!!通过 post-update-cmd 调用脚本 @auto-scripts

我试图:删除 var/cache/* 内容 执行 php bin/console cache:pool:clear cache.global_clearer 将环境设置为 prod 和 dev

没有什么变化。

我有一个带有 php-fpm7.4、mysql 8.0 的 ubuntu 20。

错误日志显示:

AH01071:得到错误'PHP 消息:PHP 致命错误:未捕获 Symfony\Component\DependencyInjection\Exception\InvalidArgumentException:必须定义参数“21”。在 /var/www/html/lavanderiasolari/public_html/laundry_manager/var/cache/prod/ContainerJ6TfZkC/App_KernelProdContainer.php:674\n堆栈跟踪:\n#0 /var/www/html/lavanderiasolari/public_html/laundry_manager/vendor/ symfony/dependency-injection/EnvVarProcessor.php(281): ContainerJ6TfZkC\App_KernelProdContainer->getParameter()\n#1 [内部函数]: Symfony\Component\DependencyInjection\EnvVarProcessor->Symfony\Component\DependencyInjection\{closure}() \n#2 /var/www/html/lavanderiasolari/public_html/laundry_manager/vendor/symfony/dependency-injection/EnvVarProcessor.php(277):

我执行了composer dump-env .env,他生成了.env.local.php,

返回数组('APP_ENV' => 'prod', 'APP_SECRET' => 'c6e083dd648f30951fb991cee1df42f9', 'DATABASE_URL' => 'mysql://[DBUSER]:'.urlencode('[dbpasswd]').'@127.0. 0.1:3306/[dbname]?serverVersion=8.0', );

我该怎么办?

非常感谢。

标签: phpsymfony

解决方案


有同样的错误。问题来自密码中的特殊字符。实际上,在 .env 变量中,您需要进行 url 编码。例如 != 变成 %21%2F 但它会导致错误

必须定义参数“21”

config/packages/doctrine.yaml 中的解决方案替换

url: '%env(resolve:DATABASE_URL)%'

经过

url: '%env(DATABASE_URL)%'

推荐阅读