Composer 报错“The zip extension is missing”是因为 PHP 运行时未启用 zip 扩展,而该扩展是 Composer 下载解压依赖所必需的;需先确认 Composer 调用的 PHP 路径及对应 php.ini 中是否启用了 zip 扩展。

Composer 报错 “The zip extension is missing” 是什么问题
这个提示不是 Composer 自身出错,而是 PHP 运行时缺少 zip 扩展 —— Composer 在下载、解压包(比如 vendor/ 里的依赖)时必须用到它。没启用该扩展,Composer 就会卡在安装或更新阶段,直接报错退出。
确认 PHP 是否真的没加载 zip 扩展
别急着装,先验证当前 Composer 调用的是哪个 PHP:
composer diagnose
看输出里 “PHP binary” 和 “PHP version” 对应的路径。然后检查该 PHP 是否启用了 zip:
php -m | grep zip
如果没输出,说明确实缺失;如果输出了 zip,但 Composer 还报错,大概率是 CLI 和 Web 使用了不同 php.ini —— 此时要确认 composer 命令调用的确实是那个已启用 zip 的 PHP。
- 用
which php和php --ini查 CLI 加载的配置文件路径 - 用
php -r "print_r(get_loaded_extensions());"看实际加载了哪些扩展 - 某些系统(如 macOS Homebrew)可能有多个 PHP 版本共存,
composer可能走的是系统默认旧版 PHP
Linux/macOS 下启用 zip 扩展的常见方式
取决于你的 PHP 安装来源:
- Ubuntu/Debian:运行
sudo apt install php-zip,然后重启 Web 服务(如sudo systemctl restart apache2或sudo systemctl restart php8.2-fpm) - CentOS/RHEL:用
sudo yum install php-pecl-zip或sudo dnf install php-pecl-zip - macOS + Homebrew:运行
brew install php@8.2(或对应版本)会自动带 zip;若已安装却未启用,检查php.ini里是否有extension=zip(注意不是extension=php_zip.dll,那是 Windows 写法) - 源码编译 PHP:需在
./configure时加上--with-zip,并确保系统已装libzip-dev(Debian)或libzip-devel(RHEL)
Windows 下 zip 扩展启用要点
Windows 用户最容易踩的坑是扩展文件名和路径写错:
- 打开你的
php.ini(通过php --ini确认位置),取消注释这行:extension=zip - 不要写成
extension=php_zip.dll(PHP 8+ 已废弃这种命名) - 确认
php_zlib.dll已启用(zip依赖 zlib,所以extension=zlib必须在zip之前) - 检查
extension_dir指向是否正确,比如C:\php\ext,且该目录下存在php_zip.dll(PHP 7.x)或zip.dll(PHP 8.x) - 改完后必须重启命令行终端(CMD/PowerShell),否则
php -m不会刷新结果
改完再跑一次 php -m | findstr zip(Windows)或 php -m | grep zip(macOS/Linux),看到输出才算真正生效。










