php - 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', );
我该怎么办?
非常感谢。
解决方案
有同样的错误。问题来自密码中的特殊字符。实际上,在 .env 变量中,您需要进行 url 编码。例如 != 变成 %21%2F 但它会导致错误
必须定义参数“21”
config/packages/doctrine.yaml 中的解决方案替换
url: '%env(resolve:DATABASE_URL)%'
经过
url: '%env(DATABASE_URL)%'
推荐阅读
- c# - 我应该使方法虚拟还是抽象?
- javascript - 为什么不触发回调函数?
- java - 将多维数组顺时针旋转 90 度
- flutter - 使用 bloc 时 Streambuilder 快照未退出等待状态
- reactjs - 如何从 Next.js 中的 url 获取多个参数?
- python - pd.merge() 和 dataframe.merge() 之间的区别
- python - 根据重复的列值过滤数据框
- java - Java Hashing.sha256().hashString 返回字符串的不同字节表示
- azure - Azure DevOps 在开发环境中运行单元测试用例
- r - 如何使用 caret-GBM 解释/调整多项分类?