先确认 zip 扩展是否加载:运行 php -m | grep zip,若无输出则未启用;再通过 php -i | grep "Loaded Configuration File" 定位 CLI 使用的 php.ini,确保其中启用 extension=zip(Linux/macOS)或 extension=php_zip.dll(Windows),最后按系统安装对应扩展或临时用 composer install --prefer-source 应急。

composer install 报错 “zip extension is missing” 怎么办
直接装不上,因为 composer 默认用 PHP 的 zip 扩展解压安装包,而它没启用——不是 Composer 本身坏了,是 PHP 缺模块。
确认 zip 扩展是否真没加载
别猜,先验证。运行:
php -m | grep zip如果没输出,说明确实没开;有输出但
composer 还报错,大概率是 CLI 和 Web 使用的 PHP 配置不一致。
- 检查当前
composer调用的是哪个 PHP:which php
和php -i | grep "Loaded Configuration File"
- 确认该 PHP 的
php.ini里有没有这行:extension=zip(Linux/macOS)或extension=php_zip.dll(Windows) - Windows 用户注意:
php.ini可能有两个(CLI 和 Apache),composer只认 CLI 版本
不同系统启用 zip 扩展的实操路径
扩展名一样,加载方式因环境而异,搞错路径或配置位置就白忙活。
- Ubuntu/Debian:
sudo apt install php-zip
然后重启 PHP-FPM 或 Apache(如果用到 Web 环境),CLI 通常不用重启 - CentOS/RHEL:
sudo yum install php-pecl-zip
或dnf install php-pecl-zip,之后确认/etc/php.d/zip.ini存在且内容为extension=zip - macOS(Homebrew PHP):
brew install php@8.2-zip
(版本号按需替换),再检查php.ini是否自动加了extension="zip" - Windows:取消
php.ini中;extension=php_zip.dll前的分号,确认php_zip.dll在ext/目录下
绕过 zip 扩展强行安装(不推荐但应急可用)
某些 CI 环境或老旧容器里实在没法装扩展,可以用 --prefer-source 让 Composer 改走 Git 克隆而非下载 zip 包。
- 临时方案:
composer install --prefer-source
- 注意:
--prefer-source会拉完整 Git 历史,体积大、速度慢,且要求项目有可用 Git 地址;私有包或无 Git 的包会直接失败 - 更糙的法子是手动下载 tar.gz 包解压到
vendor/,但后续composer update仍会卡住——治标不治本
最常被忽略的是 PHP 多版本共存时 CLI 和 Web 使用不同 php.ini,改了 Apache 的配置,composer 依然报错。盯住 php -i 输出的配置路径,只动那个文件。










