Symfony3.3升级至3.4执行composer update时出现方法未定义错误
解决Symfony 3.3升级到3.4时composer update的命令类错误
嘿,这个问题我之前帮不少开发者排查过,本质是Symfony 3.4对Console组件的命令类规范做了强制更新——要求所有自定义命令类必须实现getDefaultName()方法,但你当前使用的DoctrineCacheBundle版本太老,里面的ContainsCommand类还没适配这个新要求,所以才触发了这个致命错误。
给你几个具体的解决步骤:
首先升级DoctrineCacheBundle到兼容Symfony 3.4的版本
打开项目根目录下的composer.json,找到doctrine/doctrine-cache-bundle的配置行,把版本号改成^1.3(这个版本已经适配了Symfony 3.4的Console规则)。然后执行以下命令完成升级:composer update doctrine/doctrine-cache-bundle --with-all-dependencies或者更简单,直接让Composer自动处理兼容版本:
composer require doctrine/doctrine-cache-bundle:^1.3手动清理缓存后重新执行完整升级
为了避免旧缓存残留干扰,先手动删除缓存目录:rm -rf var/cache/*之后再重新运行完整的升级命令:
composer update如果还有类似报错的额外处理
要是之后还出现其他命令类的UndefinedMethodException(提示缺少getDefaultName方法),说明还有其他第三方Bundle版本未适配Symfony 3.4。你可以查看Composer输出的依赖冲突提示,或者去对应Bundle的官方文档确认兼容的版本范围,然后逐一升级即可。
内容的提问来源于stack exchange,提问作者Mathi9121
相关产品推荐
相关产品推荐

