Laravel运行PHPUnit测试提示PHP_VERSION无效错误该如何修复?
修复方案
错误原因
该报错是PHPUnit的底层校验逻辑触发:你当前调用的默认PHP二进制文件/usr/bin/php内置的PHP_VERSION常量值不符合规范,通常由PHP编译损坏、多版本PHP环境冲突、默认PHP二进制文件被篡改导致,和你写的测试代码没有直接关联。
修复步骤
- 第一步:先验证当前PHP的有效性
依次执行以下两条命令:
正常输出应该是类似php -v php -r "echo PHP_VERSION;"8.2.15的标准版本号,如果输出乱码、不完整、直接报错,说明当前/usr/bin/php文件已经损坏。 - 第二步:优先使用项目对应的PHP版本执行测试
大部分出现该问题的场景都是环境安装了多个PHP版本,PHPUnit默认调用的系统默认PHP和项目实际使用的PHP版本不一致。先执行which php查看当前CLI用的PHP路径,如果输出不是/usr/bin/php,就直接用该路径执行测试即可,比如输出是/usr/local/bin/php8.1,执行命令改为:/usr/local/bin/php8.1 ./vendor/bin/phpunit --filter=testNoImportFile - 第三步:修复损坏的默认PHP
如果确认是/usr/bin/php本身损坏,直接重装对应版本的PHP-cli包即可:- Debian/Ubuntu 系系统:
sudo apt reinstall php<你的版本号>-cli,比如用的PHP8.1就执行sudo apt reinstall php8.1-cli - CentOS/RHEL 系系统:
sudo dnf reinstall php-cli
- Debian/Ubuntu 系系统:
- 可选校验:检查PHPUnit版本兼容性
如果以上操作都无效,确认你composer依赖的PHPUnit版本和PHP版本匹配:PHPUnit 9要求PHP >=7.3,PHPUnit 10要求PHP >=8.1,PHPUnit 11要求PHP >=8.2,版本不匹配的话调整composer.json里的phpunit依赖版本后执行composer update phpunit/phpunit即可。
测试代码补充提示
你提供的测试代码缺少Storage门面的导入,解决PHP版本问题后如果报类未找到错误,在测试文件顶部加上一行use Illuminate\Support\Facades\Storage;即可。
内容的提问来源于stack exchange,提问作者user11771479
相关产品推荐
相关产品推荐

