Composer 报错缺少 PHP 扩展(如 zip、curl、mbstring)是因 PHP 环境未启用对应扩展,需根据错误提示确认扩展名,Linux 用 apt 安装对应 php*-ext 包并 phpenmod 启用,Windows 解注 php.ini 中 extension= 行并确保 dll 存在,最后通过 php -m 和 phpinfo() 分别验证 CLI 与 Web 环境。

Composer 报错提示缺少 PHP 扩展(比如 ext-zip、ext-curl、ext-mbstring),说明当前 PHP 环境没启用对应扩展,不是 Composer 本身的问题,而是 PHP 运行时依赖缺失。
确认缺失的是哪个扩展
Composer 错误信息里会明确写出扩展名,例如:
PHP Warning: Module 'zip' is not loaded in Unknown on line 0 The requested PHP extension zip is missing from your system.
重点看 zip、curl、mbstring、xml、json 这类词 —— 它们就是你要开的扩展名。注意:扩展名不带 ext- 前缀,但配置文件里通常写 extension=zip 或 extension=php_zip.dll(Windows)。
Linux/macOS 下快速启用(以 Ubuntu/Debian 为例)
大多数现代 Linux 发行版用包管理器安装扩展比手动改 php.ini 更可靠:
立即学习“PHP免费学习笔记(深入)”;
- 先查 PHP 版本:
php -v(如显示PHP 8.2.10,后续命令要匹配) - 装扩展包(以
zip和mbstring为例):sudo apt install php8.2-zip php8.2-mbstring - Ubuntu 22.04+ 默认启用新扩展,旧系统可能需手动启用:
sudo phpenmod zip mbstring - 重启 Web 服务:
sudo systemctl restart apache2或sudo systemctl restart php8.2-fpm
别直接去编辑 /etc/php/*/cli/php.ini 或 /etc/php/*/apache2/php.ini 加 extension= 行 —— 包管理器安装的扩展通常已配好 ini 文件,重复加反而可能报错。
Windows 下启用扩展(WAMP/XAMPP/手动安装)
Windows 用户常见问题是扩展 DLL 文件存在,但被注释掉了:
- 找到你的
php.ini文件(运行php --ini查路径,注意 CLI 和 Web 使用的可能是不同 ini) - 搜索
;extension=zip或;extension=php_zip.dll,去掉前面的分号 - 确保
extension_dir指向正确的目录,比如extension_dir = "ext"(相对路径)或extension_dir = "C:\php\ext"(绝对路径) - 检查
php_zip.dll是否真在该目录下;若没有,说明 PHP 安装包没带它,需换完整版(如 Windows 下载页的 “Thread Safe + Zip” 版) - 重启 Apache 或 Nginx
特别注意:WAMP/XAMPP 的托盘菜单里有“PHP > PHP extensions”,勾选即可自动修改 ini 并重启,比手改更安全。
验证是否生效 & 常见陷阱
别只信 php -m | grep zip,因为 CLI 和 Web(Apache/FPM)可能用不同配置:
- CLI 检查:
php -m | grep zip - Web 检查:新建
info.php,内容为,浏览器访问,搜 “zip” 看是否显示 “enabled” - 陷阱1:改了
php.ini但没重启服务 → 无效 - 陷阱2:CLI 用的 ini 和 Web 用的不是同一个 → 两个地方都要确认
- 陷阱3:某些扩展(如
openssl)依赖系统库,Linux 上还需sudo apt install libssl-dev(编译时)或libssl1.1(运行时)
最省事的办法永远是:先用 php -v 和 php --ini 锁定版本和配置路径,再对症装包或解注释,最后双端验证 —— 少走一半弯路。











