默认Laravel应用运行PHPUnit时触发each()函数未定义致命错误
解决Laravel中运行phpunit时出现Call to undefined function each()的致命错误
错误根源
你触发的致命错误是因为使用了XAMPP自带的PEAR版本PHPUnit,该版本过于老旧,依赖的each()函数在PHP 7.2及以上版本已被移除,导致调用未定义函数。而Laravel项目通过Composer安装的PHPUnit是适配当前PHP版本的,问题出在你调用了系统全局的phpunit命令,而非项目本地的适配版本。
解决方案
1. 直接运行项目本地的PHPUnit
在Laravel项目根目录下,执行对应系统的命令:
- Windows:
vendor\bin\phpunit - Linux/macOS:
./vendor/bin/phpunit
2. (可选)替换全局老旧PHPUnit
若想直接使用phpunit命令,先卸载XAMPP中的全局旧版本:
pear uninstall phpunit/PHPUnit
再通过Composer全局安装适配当前PHP版本的PHPUnit:
composer global require phpunit/phpunit
确保Composer全局bin目录已加入系统环境变量,之后在项目根目录直接运行phpunit即可。
3. 确认配置文件
你的phpunit.xml是标准Laravel测试配置,无需修改。
内容的提问来源于stack exchange,提问作者Mohammad Darweesh
相关产品推荐
相关产品推荐

