Symfony5.2降级4.4后composer install报symfony-cmd不存在如何解决
错误含义
sh: symfony-cmd: command not found 报错发生在Composer依赖安装完成后的后置脚本执行阶段:
你当前composer.json的scripts配置项中,定义了auto-scripts使用symfony-cmd作为命令执行器,该执行器是symfony/flex Composer插件提供的专属功能。你从Symfony 5.2降级到4.4版本时没有同步调整Composer配置,要么symfony/flex包被意外移除,要么版本与当前Symfony版本不兼容,导致系统找不到对应可执行命令。
该报错不影响核心依赖安装,所以vendor文件夹可以正常生成,仅会导致缓存清理、静态资源安装这类后置操作未执行。
修复方案
提供两种适配方案,二选一即可:
方案一(推荐,兼容Symfony官方配置规范)
- 编辑composer.json,做两处修改:
- 在
require字段中添加symfony/flex依赖,版本选择支持Symfony 4.4的最新稳定版:"symfony/flex": "^1.17" - 将
extra.symfony.require字段的值从原来的5.2.*修改为4.4.*,匹配当前Symfony版本
- 在
- 执行命令安装symfony/flex,跳过脚本执行避免报错:
composer update symfony/flex --no-scripts - 手动执行后置脚本验证修复效果:
composer run-script auto-scripts,无报错即为修复完成
方案二(无需安装symfony/flex)
如果不需要使用flex的功能,可以直接修改脚本配置,替换symfony-cmd为原生控制台命令调用:
将scripts字段下的auto-scripts配置:
"auto-scripts": { "cache:clear": "symfony-cmd", "assets:install %PUBLIC_DIR%": "symfony-cmd" }
修改为:
"auto-scripts": { "php bin/console cache:clear": "script", "php bin/console assets:install %PUBLIC_DIR%": "script" }
修改后执行composer run-script auto-scripts验证即可。
内容的提问来源于stack exchange,提问作者Mayor of the Plattenbaus
相关产品推荐
相关产品推荐

