composer install 卡在 downloading 阶段主因是 http 响应中断:dns 超时/劫持、镜像 url 缺斜杠致 404、vcs 包直连 github、镜像同步延迟或节点异常;验证需 curl -i 测镜像可用性,修复须清缓存、删 vendor、核对配置及 shasum。

Composer 不支持断点续传,所谓“卡住后继续”本质是缓存复用 + vendor 状态比对,不是恢复下载进度。真正卡在某一步,大概率是镜像源没生效、包类型 fallback 到 git clone,或缓存 ZIP 损坏。
为什么 composer install 会卡在 downloading 阶段?
这不是 Composer 本身慢,而是它在等一个 HTTP 响应——而这个响应常被中间链路掐断:
- 直连
packagist.org时 DNS 解析超时或被劫持(尤其企业网络) - 镜像 URL 配错:比如漏了末尾
/,导致composer config -g repo.packagist显示的是https://mirrors.aliyun.com/composer(无斜杠),实际请求变成https://mirrors.aliyun.com/composerpackages.json,404 - 包在
composer.lock中标记为"type": "vcs"或显式写了"source",Composer 会绕过镜像,直连 GitHub 走git clone—— 此时换镜像完全无效 - 镜像同步延迟:新发布的包还没同步到阿里云/腾讯云,Composer 查不到
dist.url,自动退回到 source 模式,触发慢速且易中断的 git 拉取
验证是否真走镜像:运行 curl -I https://mirrors.aliyun.com/composer/,必须返回 HTTP/2 200;若超时、502 或 503,说明镜像节点异常,得换源或临时加代理。
如何确认当前安装是否在“跳过已装包”而非重下?
别靠感觉,用 --dry-run 看真实行为:
- 输出里大量出现
Skipped monolog/monolog (installed)→ vendor 状态可信,可直接重试 - 只显示
Installing laravel/framework或报错 → vendor 或缓存已损坏,重试只会重复失败 - 输出含
Cloning xxx from github.com→ 当前包走的是source,不是 dist ZIP,镜像配置对它无效
注意:--dry-run 不写文件、不改 vendor,纯读取校验,执行安全。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
Failed to extract vendor/package-name: unable to open archive 怎么办?
这不是缺 zip 扩展,而是 ZIP 文件本身损坏。常见于缓存复用坏包,或镜像返回了截断响应:
- 删掉整个
vendor/目录(rm -rf vendor或rmdir /s vendor) - 运行
composer clear-cache,清空~/.composer/cache/files/下所有 ZIP - 确认镜像地址正确:
composer config -g repo.packagist输出必须是完整 URL,如https://mirrors.aliyun.com/composer/(末尾斜杠不能少) - 重试命令加
--no-scripts --no-plugins,跳过脚本和插件逻辑,降低失败面
别碰 vendor/composer/tmp-*.zip 或手动补 installed.json —— 这些会被自动覆盖,且校验失败后 Composer 直接拒绝加载。
手动“预置 ZIP”加速大包安装(如 laravel/framework)
当某个包反复失败、又无法换源时,可手动下载并放入缓存目录,让 Composer 跳过网络环节:
- 从
composer.lock中找到该包的dist.url和dist.shasum字段 - 用
wget -c <dist.url></dist.url>或curl -C - -o package.zip <dist.url></dist.url>下载完整 ZIP(支持断点续传) - 按路径规则放入缓存:
~/.composer/cache/files/<vendor>/<package>/<shasum>.zip</shasum></package></vendor>(例如~/.composer/cache/files/laravel/framework/abc123...xyz.zip) - 再运行
composer install --no-plugins --no-scripts,Composer 会直接解压缓存 ZIP,不发任何网络请求
关键点:路径中的 <shasum></shasum> 必须与 composer.lock 里完全一致,否则不命中缓存;vendor/composer/tmp-*.zip 是临时文件,不要手动修改或移动。
最常被忽略的其实是镜像配置是否真正生效——很多“卡住”问题,根源只是 composer config -g repo.packagist 看着像对了,但 curl 一测就超时,或者 URL 少了个 / 导致路由错乱。先验证,再操作。










