composer zlib_decode()错误源于 php zlib 扩展异常、ZIP 损坏、网络中断或 zlib 库版本不兼容;需检查 zlib 启用状态、清缓存、禁用 ZIP 校验或改用git 源码安装。

这个问题通常出现在 Composer 下载或 解压 ZIP 包时,zlib 扩展无法正确解码压缩流,导致 zlib_decode(): data Error 或类似错误。根本原因多为 PHP zlib 扩展异常、ZIP 文件损坏、网络中断导致包不完整,或系统级 zlib 库版本不兼容。
检查并修复 PHP zlib 扩展状态
Composer 依赖 PHP 的 zlib 扩展处理 ZIP 解压。先确认扩展已启用且工作正常:
- 运行
php -m | grep zlib,确保输出包含zlib - 执行
php -r "echo function_exists('zlib_decode') ? 'OK' : 'Missing';",应返回OK - 若缺失,linux 用户可安装(如 ubuntu):
sudo apt install php-zip php-zlib;macOS 使用 Homebrew 安装对应 PHP 版本的 zlib 模块 - 重启 Web 服务或 CLI PHP 环境后重试
清除 Composer 缓存并跳过本地解压验证
损坏的缓存 ZIP 文件会反复触发 zlib 错误。强制清理并临时绕过校验可快速验证是否为缓存问题:
- 运行
composer clear-cache彻底删除~/.composer/cache/下所有内容 - 添加 环境变量 跳过 ZIP 校验(仅调试用):
COMPOSER_DISABLE_ZIP_CHECK=1 composer install - 若此时成功,说明原 ZIP 包在缓存中已损坏,后续应保持网络稳定并避免中断下载
更换下载方式:禁用 ZIP 并改用源码克隆
Composer 默认优先使用 ZIP 包(快但依赖 zlib)。若 zlib 不可靠,可强制回退到 Git 克隆源码(不经过 zlib 解压):
- 在项目根目录创建或编辑
composer.json,加入配置:
"config": {"preferred-install": "source", "fxp-asset": { "installer-paths": { "npm-asset-library": "vendor/npm-asset" } } }
- 或全局设置:
composer config --global preferred-install source - 注意:需系统已安装 Git,且对应包支持 source 安装(绝大多数开源包都支持)
升级 Composer 和 PHP 版本
旧版 Composer(
- 升级 Composer:
composer self-update(推荐 ≥2.5.x) - 升级 PHP 至 8.0+,新版对 zlib 流处理更健壮,并默认启用
zlib.output_compression = Off避免干扰 - 若无法升级 PHP,可在
php.ini中显式关闭输出压缩:zlib.output_compression = Off
以上就是如何修复 Composer 因 zlib_decode()错误导致的 解压 失败?的详细内容,更多请关注 php 中文网其它相关文章!