答案是php cli环境缺失zip扩展,需先用php -m | grep zip验证是否加载,再根据系统类型安装对应php-zip包(如ubuntu用sudo apt install php-zip),或手动在cli专用php.ini中启用extension=zip并重启终端。

Composer 报错 “The zip extension is missing” 或 “requires ext-zip” 时,不是 Composer 本身坏了,而是 PHP CLI 环境没装或没启用 zip 扩展——必须补上才能解压依赖包。
确认是不是真缺 zip 扩展
别凭错误信息直接开装,先验证当前 CLI 模式下 zip 是否真的不可用:
- 运行
php -m | grep zip,如果无输出,说明没加载 - 运行
php -i | grep "Loaded Configuration File",确认你改的是 CLI 对应的php.ini(不是 Apache 或 FPM 的) - 注意:有些系统(如 Debian)默认不装任何扩展,
php -v正常不代表扩展就齐了
按系统类型装 php-zip 扩展
不同发行版安装命令差异大,抄错会导致白忙活:
- Ubuntu/Debian:
sudo apt install php-zip(自动启用,不用改php.ini) - CentOS/RHEL 8+:
sudo dnf install php-zip - CentOS/RHEL 7:
sudo yum install php-pecl-zip(不是php-zip) - Alpine(Docker 常见):
apk add php8-zip或apk add php7-zip,取决于 PHP 版本 - macOS + Homebrew:
brew install php@8.2-zip(版本号要和php -v一致)
装完必须新开终端,再跑一次 php -m | grep zip 验证。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
手动启用 zip 的几种情况
某些环境(比如源码编译 PHP、或用了多版本管理器)可能已装 zip.so 但没启用:
- 查
php --ini输出的配置文件路径,编辑对应php.ini - 取消注释或添加一行:
extension=zip(PHP 8+ 可省略.so后缀) - 如果提示找不到
zip.so,用find /usr -name "zip.so" 2>/dev/null定位,然后写绝对路径,例如:extension=/usr/lib/php/20220829/zip.so - 改完不用重启服务,但要确保没被
/etc/php/*/cli/conf.d/下其他配置覆盖
别漏掉 unzip 命令和 proc_open()
即使 zip 扩展启用了,Composer 还可能 fallback 到系统 unzip 命令;而 proc_open() 是执行该命令的底层函数:
- 检查
unzip是否存在:which unzip,没有就装:sudo apt install unzip(Ubuntu/Debian)或sudo yum install unzip(CentOS) - 如果报错含
proc_open is not available,说明proc_open被禁用了——去php.ini里查disable_functions行,删掉proc_open,保存后重试 - 这两个问题常一起出现,尤其在 CI 环境或容器里,只修
zip扩展不够
真正容易被忽略的是:CLI 和 Web 服务用的 PHP 配置文件往往不同,php -m 看到的模块,和 composer install 实际运行时加载的模块,可能根本不是一回事。










