必须验证php -r "new ZipArchive();"是否报错,因php -m | grep zip仅显示模块名加载,不保证ZipArchive类可用;常见原因包括PHP与扩展版本不匹配、Windows下dll缺失、Linux发行版安装包差异及多php.ini路径冲突。

php -m 显示 zip 但 Composer 还报错?验证方式错了
看到 php -m | grep zip 有输出,不代表 ZipArchive 类真能用。很多环境是“扩展名加载了,但类初始化失败”。必须补测这句:
php -r "new ZipArchive(); echo 'OK';"
如果报 Fatal error: Uncaught Error: Class 'ZipArchive' not found,说明扩展只是名义加载,实际不可用。常见原因包括:
- PHP 版本和 zip 扩展不匹配(比如 PHP 8.2 装了 php8.1-zip)
- php.ini 中写的是
extension=php_zip.dll,但 PHP 8.0+ 要求写成extension=zip(去后缀) - Windows 下
php_zip.dll文件根本不存在于ext/目录,或依赖的libzip.dll缺失
Linux 安装 php-zip 后仍不生效?注意发行版差异和路径覆盖
Ubuntu/Debian 装完 sudo apt install php-zip 通常自动启用;但 CentOS/RHEL 7 必须装 php-pecl-zip,不是 php-zip——后者在 RHEL 7 上压根没这个包。
装完别急着跑 Composer,先确认 CLI 模式用的是哪个配置:
php --ini
重点看 Loaded Configuration File 和 Scan for additional .ini files in。后者常包含 /etc/php/*/cli/conf.d/,里面可能有独立的 20-zip.ini,它会覆盖主 php.ini 的设置。删掉或改名冲突的 ini 文件再试。
另外,Docker Alpine 镜像里默认没 zip:要 apk add php8-zip(版本号必须和你 php -v 输出一致),否则 php -m 永远看不到 zip。
将提醒同步至 Windows/Outlook 日历。用户提及「提醒我」「设置提醒」「加到日历」「同步到日历」「日程」「calendar」「日历」时触发。支持Microsoft Graph API 设备代码流认证,无需 Web 服务器,直接写入用户 Outlook 日历。
Windows 下 extension=zip 不起作用?检查 dll 文件是否存在
打开 php --ini 显示的 php.ini,确认 extension=zip 这行已取消注释。但这只是第一步——关键要看 php.ini 里 extension_dir 指向的目录下,是否有 php_zip.dll 或 zip.dll(取决于 PHP 版本)。
运行这条命令定位文件:
dir "%PHP_HOME%\ext\php_zip.dll" 2>nul || dir "%PHP_HOME%\ext\zip.dll" 2>nul
如果没输出,说明 DLL 根本不存在。此时不能只改 php.ini,得重装 PHP 或从官方二进制包里手动复制对应 DLL 文件进去。
还有一种隐形情况:XAMPP/WAMP 有两个 php.ini(Apache 和 CLI 各一份),composer install 走的是 CLI 的,但你只改了 Apache 的那个,结果白忙活。
Composer 报 requires ext-zip 却死活过不去?可能是多 PHP 环境混用
运行 composer diagnose,看输出里的 PHP binary 路径。它可能和你日常敲 php -v 的不是同一个 PHP 实例——比如你用 brew 装了一个 PHP,又用 Scoop 装了另一个,而 Composer 绑定的是后者。
解决方法只有两个:
- 用
which composer查它位置,再看它是否硬编码了 PHP 路径(比如#!/usr/bin/env php会走 PATH 里第一个 php) - 直接指定 PHP 路径执行:
/usr/local/bin/php /usr/local/bin/composer install(路径按你实际替换)
最麻烦的是 Docker 或 CI 场景:基础镜像用的是 php:8.2-cli-alpine,它默认不带 zip 扩展,也**不带 libzip-dev**,所以 pecl install zip 会失败。必须先 apk add libzip-dev,再装扩展,顺序不能反。

















