Composer 报扩展缺失错误需先确认 CLI 模式下 PHP 是否启用对应扩展:运行 php -m | grep extname 检查,php --ini 查配置路径,再按系统(Ubuntu/CentOS/Windows)正确安装或启用扩展并重启服务。

Composer 报错说某个 PHP 扩展缺失,不是 Composer 本身的问题,而是它检测到你的 PHP 环境缺依赖 —— 你得先让 PHP 能加载那个扩展,Composer 才会继续。
composer install / update 报 extension missing 错误怎么快速定位
这类错误通常长这样:Package phpunit/phpunit requires ext-dom * 或 Your requirements could not be resolved to an installable set of packages.,然后下面列出一堆 ext-xxx 不满足。别急着装扩展,先确认两件事:
- 这个扩展名(比如
dom、xml、mbstring)是不是真的没启用,还是只是 CLI 和 Web 使用了不同 php.ini - 运行
php -m | grep dom(Linux/macOS)或php -m(Windows,手动找)看 CLI 模式下是否已加载 —— Composer 默认走 CLI,不是 Apache/Nginx 的 PHP - 执行
php --ini查看 CLI 当前用的是哪个php.ini,别改错了配置文件 - 有些扩展(如
dom、simplexml)是 PHP 编译时内置的,不单独提供.so/.dll,只可能被禁用,不是“没安装”
Ubuntu/Debian 上装 PHP 扩展(如 ext-gd、ext-curl)
PHP 版本决定包名格式,漏掉版本号就装不上。以 PHP 8.2 为例:
- 查当前 PHP CLI 版本:
php -v - 更新源:
sudo apt update - 装扩展:
sudo apt install php8.2-gd php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip - 这些包会自动在
/etc/php/8.2/cli/conf.d/下写好 ini 文件,不用手动改php.ini - 验证:
php -m | grep gd,有输出即成功
CentOS/RHEL/Rocky Linux 上启用 ext-xml、ext-dom 等内置扩展
这些系统常把 XML 相关功能打包进 php-xml,但装完不一定自动启用 —— 尤其是 dom 和 simplexml 依赖 xml 才能工作:
立即学习“PHP免费学习笔记(深入)”;
- 先装基础 XML 支持:
sudo dnf install php-xml(PHP 8.0+)或sudo yum install php-xml(旧版) - 检查是否生成了启用文件:
ls /etc/php.d/*xml*.ini,常见文件名如20-xml.ini - 如果没生成,手动创建
/etc/php.d/15-dom.ini,内容写一行:extension=dom - 重启 PHP-FPM 或 Apache:
sudo systemctl restart php-fpm或sudo systemctl restart httpd - 再跑
php -m | grep dom,必须看到才代表 CLI 可用
Windows 下启用 php_mbstring.dll 等扩展
Windows 用户最容易卡在这步:扩展 DLL 存在,但 php.ini 没配对,或者路径不对:
- 确认
php.ini是 CLI 正在读的那个:php --ini - 打开该
php.ini,找到;extension=mbstring这类行,删掉前面的分号 - 确保
extension_dir指向正确目录,例如:extension_dir = "ext"(相对 PHP 安装根目录)或绝对路径"C:/php/ext" - 检查
ext/目录下是否存在php_mbstring.dll—— 名字必须完全匹配,大小写敏感 - 保存后运行
php -m验证,别只靠浏览器 phpinfo()
最常被忽略的一点:Composer 只认 CLI 的 PHP 配置,和你在浏览器里看到的 phpinfo() 结果可能完全不同。改完扩展,一定要用 php -m 和 php -v 在终端里验证,而不是刷新网页等结果。



















