答案是PHP CLI环境缺失指定扩展,需用php -m | grep 扩展名确认缺失、php --ini定位配置文件,再按系统安装对应扩展(如Ubuntu用sudo apt install php-zip)、验证class_exists('ZipArchive')并检查libzip版本是否≥1.6.0。

Composer 安装过程提示缺少扩展,不是 Composer 自己能“下”出来的——它只是校验者,不是安装器。你得先让 PHP 环境真正支持那个扩展,报错才会消失。
确认 CLI 环境到底缺哪个扩展
别信报错里模糊的“ext-* is missing”,直接查真实状态:
- 运行
php -m | grep zip(把zip换成报错里的扩展名,比如gd、intl、fileinfo)——没输出就是真没加载 - 运行
php --ini看 CLI 用的是哪个php.ini,别去改 Apache 或 Nginx 用的那个 - 再跑一次
php -r "var_dump(class_exists('ZipArchive'));",返回bool(false)就坐实了问题
按系统装扩展,别抄错包名
装错名字是高频翻车点,不同系统、不同 PHP 版本,包名规则完全不同:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Ubuntu/Debian:
sudo apt install php-zip(通用)或sudo apt install php8.2-zip(指定版本) - CentOS/RHEL 7:
sudo yum install php-pecl-zip;RHEL 8+:sudo dnf install php-zip - Alpine(Docker):
apk add php8-zip(注意 PHP 大版本号要匹配) - macOS + Homebrew:
brew install php@8.2-zip(必须和php -v输出一致) - Windows:打开
php.ini(用php --ini确认路径),取消;extension=zip前的分号,并确认extension_dir指向的目录下存在php_zip.dll
装完还报错?检查三个隐藏层
很多人装完就以为完事了,结果 composer install 还在报错,往往卡在这三处:
-
php --ini显示的配置文件路径,和你实际修改的不是同一个——尤其多 PHP 版本共存时 - PHP 是源码编译安装的,
zip.so根本不存在,得手动pecl install zip或重编译 - 系统级依赖库太旧:比如 CentOS 7 自带
libzip0.10,但 PHP 8.0+ 要求 ≥ 1.6.0;查版本用pkg-config --modversion libzip
最麻烦的不是找不到怎么装,而是你以为装对了,其实只动了 Web 的配置、没管 CLI,或者扩展启用了但底层库不兼容——每层都得单独验证,漏一环就白忙。

















