运行php artisan test提示PHPUnit需要dom扩展如何解决
php artisan test 报"PHPUnit requires the dom extension" 解决方法 报错核心原因:dom是PHP原生C扩展,不属于composer管理的第三方依赖,执行composer install不会安装或启用该扩展,PHPUnit的文档解析、断言相关能力强依赖这个扩展,缺失就会直接抛出该错误。
按以下步骤排查修复:
- 第一步:确认CLI模式下PHP的dom扩展状态
打开终端执行命令,查看命令行端PHP已加载的扩展:php -m | grep dom
如果执行后没有任何输出,说明扩展未加载;如果提示扩展不存在,说明对应PHP版本根本没安装dom扩展。 - 第二步:对应环境安装/启用dom扩展
- Debian/Ubuntu(含WSL2 Ubuntu):
匹配你当前的PHP版本安装扩展包,比如PHP 8.1版本执行:sudo apt update && sudo apt install php8.1-xml php8.1-dom
安装完成后会自动写入CLI的PHP配置,无需手动修改。 - CentOS/RHEL/AlmaLinux:
执行:sudo dnf install php-xml php-dom - Windows集成环境(PhpStudy、WAMP、XAMPP):
先执行php --ini找到命令行PHP加载的php.ini文件路径(注意不要改错成Web服务FPM/Apache用的配置文件,两者经常是分开的),打开配置文件搜索;extension=dom,删除行首的分号注释符,保存后关闭所有终端窗口重新打开即可。 - macOS Homebrew安装的PHP:
该渠道的PHP默认自带dom扩展,如果未加载,同样通过php --ini找到配置文件,确认extension=dom.so行没有被注释,被注释的话去掉行首;保存即可。
- Debian/Ubuntu(含WSL2 Ubuntu):
- 第三步:验证修复
重新执行php -m | grep dom,如果输出dom字段,说明扩展加载成功,此时再执行php artisan test即可正常运行。
常见踩坑提醒:大部分人遇到这个问题都是因为只给Web运行环境开了dom扩展,命令行CLI环境用的是独立的php.ini配置,修改配置前一定要用
php --ini确认当前CLI加载的配置文件路径,避免改了不生效。
内容的提问来源于stack exchange,提问作者developer
相关产品推荐
相关产品推荐

