Github Actions的super-linter报Composer PHP版本不兼容错误如何解决?
报错原因
虽然你的根composer.json声明了支持PHP ^7.3||^8.0,但触发报错的核心原因是你的依赖链中存在更高的PHP版本要求:
- 你依赖的
psalm/plugin-phpunit@^0.16.1本身的composer配置要求PHP >= 8.0,根声明的版本范围无法覆盖子依赖的强制限制 - 如果你是在本地PHP >=8.0的环境下执行
composer install生成了vendor目录并提交到了仓库,Composer会根据你本地的PHP版本生成vendor/composer/platform_check.php校验规则,到CI环境运行在PHP7.4下时就会触发版本校验失败
排查步骤
- 执行命令
composer why-not php 7.4,可以直接输出所有不支持PHP7.4的依赖包及对应的版本限制 - 打开
composer.lock文件,搜索php关键字查看各依赖包的PHP版本约束,确认是哪个包强制要求>=8.0 - 执行命令
php -v确认本地生成vendor时使用的PHP版本,验证是否和CI运行环境版本不一致
解决方案
根据你的业务需求选择对应方案即可:
- 如果你需要保留PHP7.4兼容性
- 降低依赖版本:将
psalm/plugin-phpunit的版本约束改为^0.15.0,该版本支持PHP7.3及以上 - 锁定平台版本:在
composer.json的config字段下添加配置:
后续执行"config": { "platform": { "php": "7.4.19" } }composer update时会强制模拟PHP7.4环境筛选兼容的依赖版本 - 不要提交
vendor目录到仓库,在CI的super-linter执行前增加composer install --ignore-platform-req=php步骤,在CI环境重新安装适配当前PHP版本的依赖
- 降低依赖版本:将
- 如果你不需要兼容PHP7.4
- 修改super-linter的运行配置,指定使用PHP8.0及以上版本运行,即可匹配现有依赖的版本要求
内容的提问来源于stack exchange,提问作者Parsa Nikoo
相关产品推荐
相关产品推荐

