PHP8.1.7下Laravel9执行composer update报phpunit兼容错误
问题说明
当前运行环境为PHP 8.1.7、Composer 2.3.7、Laravel 9,在项目内执行composer update时触发依赖解析报错,报错信息如下:
Problem 1 - phpunit/phpunit[6.0.0, ..., 6.5.14] require php ^7.0 -> your php version (8.1.7) does not satisfy that requirement. - Root composer.json requires phpunit/phpunit ~6.0 -> satisfiable by phpunit/phpunit[6.0.0, ..., 6.5.14].
故障原因
报错核心是版本约束不匹配:
- PHPUnit 6.0到6.5.14全版本仅支持PHP 7.0及以上的PHP7系列版本,完全不兼容PHP 8.1
- 项目根目录
composer.json中对phpunit/phpunit的版本约束写死为~6.0,Composer只能拉取6.x版本的PHPUnit,和当前PHP版本冲突 - Laravel 9框架本身最低要求PHPUnit 9.x版本,6.x版本的PHPUnit也无法和Laravel 9正常适配
解决方法
按以下步骤操作即可修复:
- 打开项目根目录的
composer.json文件,找到require-dev节点下的phpunit/phpunit配置项,将原有版本约束"~6.0"修改为"^9.5.10",该版本是Laravel 9官方默认适配的PHPUnit版本,完美支持PHP 8.1 - 执行命令
composer clearcache清理本地Composer的旧依赖缓存 - 删除项目根目录下的
composer.lock文件,清除旧版本的依赖锁定记录 - 重新执行
composer update命令,即可正常完成依赖安装更新
补充提示:如果项目内存在基于PHPUnit 6编写的历史测试用例,升级到PHPUnit 9后可能存在少量语法、断言方法的兼容问题,参照PHPUnit版本变更说明调整对应测试代码即可,Laravel 9自带的测试脚手架已经完全适配PHPUnit 9,后续新写的测试用例不会出现兼容问题。
内容的提问来源于stack exchange,提问作者Esmatullah Hanif
相关产品推荐
相关产品推荐

