Composer不支持断点续传,因其下载的ZIP包需完整SHA256校验,服务端不支持HTTP Range请求且URL内容不固定;中断后重试是否有效取决于失败阶段:瞬时网络问题通常可跳过已装包,而ZIP损坏、installed.json截断或解压中断则必须清理vendor和缓存后重装。

Composer 不支持断点续传,所谓“续装”其实是靠缓存复用、vendor/目录状态比对和composer.lock校验来跳过已成功部分——它不会保留下载进度,也不会重用半截 ZIP 文件。
为什么 Composer 无法真正断点续传
Composer 下载的是带签名的 ZIP 包(如 GitHub 的 zipball URL),服务端不返回 Accept-Ranges 响应头,且同一 URL 多次请求内容可能不同(含临时 token)。更重要的是,它必须校验整个 ZIP 的 sha256 值,任何局部文件都无法绕过校验。中断时写入的 vendor/composer/tmp-*.zip 是不完整文件,下次运行会直接删掉重下。
重试 composer install 什么时候能“接上”
取决于中断发生的位置和残留状态是否可信:
- 网络抖动、DNS 超时、TLS 握手失败等瞬时问题:重试通常立即成功,前提是
composer.lock完整且vendor/package-name已解压完成 -
vendor/composer/installed.json已写入部分包记录:Composer 会跳过这些包,只处理未安装或失败的 - 运行
composer install --dry-run看输出:大量显示Skipped表示状态可续;若只显示Installing或报错,则基本要清理
哪些错误说明必须手动清理
一旦出现以下任一现象,硬重试只会循环失败,必须清理后重装:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
Failed to extract vendor/package-name: unable to open archive→ ZIP 文件损坏(常见于缓存复用坏包) -
Invalid argument supplied for foreach()→vendor/composer/installed.json被截断或为空 -
Content-Length mismatch→ 缓存里存了半截 ZIP,重试仍会复用 - 磁盘满或权限不足导致解压卡住:
vendor/package-name目录残留破损结构,后续运行会校验失败
清理顺序固定:rm -rf vendor(Windows 用 rmdir /s vendor)→ composer clear-cache → composer install --no-plugins --no-scripts --prefer-dist。
换镜像源比调任何参数都管用
国内用户 80% 的“中断”根本不是 Composer 逻辑问题,而是连不上 packagist.org 或 GitHub API:
- 执行
curl -I https://mirrors.aliyun.com/composer/必须返回HTTP/2 200,否则镜像未生效 - 全局配置阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 私有包未同步到镜像?需在
composer.json单独配repositories,否则 Composer 会静默回退到官方源卡住 - CI 环境建议加
--no-plugins --no-scripts --prefer-dist,跳过非必要环节降低失败面
真正容易被忽略的是:vendor/ 目录权限混乱、符号链接损坏、Windows 下长路径限制,这些会让“看似恢复”的操作实际失败,比重新下载还麻烦。

















