卡在 Resolving dependencies 是因 http-basic-timeout(默认60秒)过短导致元数据请求超时,需同时调高该值并切换国内镜像源且禁用 packagist.org 回源。

直接调高 http-basic-timeout 并换国内镜像源,比单纯延长 process-timeout 更有效——因为“获取依赖列表”本质是向 Packagist 发起 HTTP 请求拉取 packages.json 元数据,卡在这里说明是单次请求超时,不是整个安装流程慢。
为什么卡在 Resolving dependencies 而不是 Downloading
运行 composer install -vvv 后最后一行停在 Resolving dependencies,基本可断定是 DNS 解析或首字节等待超时。这不是网络不通,而是 Composer 默认的 http-basic-timeout(60 秒)太短,尤其面对国内镜像首包延迟高、TLS 握手慢等情况。
-
http-basic-timeout控制每次 HTTP GET 的最大等待时间(含 DNS、TCP 连接、TLS、首字节),默认仅 60 秒 -
process-timeout是总耗时限制,对“拉元数据”这一步不敏感——它还没开始下载包,就已卡死 - 阿里云、腾讯云等镜像虽快,但首次访问仍可能因 CDN 节点未预热、证书 OCSP 检查慢而触发 60 秒超时
必须同时设置 http-basic-timeout 和镜像源
只设超时不换源,等于在低速路上加宽车道;只换源不调超时,等于换了高速路但限速牌还钉在 60km/h。两者要一起动。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局生效(推荐):
composer config -g http-basic-timeout 300+composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 项目级生效(如 CI 流水线):
composer config http-basic-timeout 240,再确认composer.json中没硬编码"repositories"覆盖全局配置 - 临时调试用:
composer install --http-basic-timeout=300 -vvv,配合-vvv看最后一行是否从Resolving dependencies变成Downloading
警惕 packagist.org 回源和私有仓库干扰
即使设了国内镜像,Composer 仍可能 fallback 到 packagist.org,尤其当镜像返回 404 或 503 时——这个回源过程会再次消耗 http-basic-timeout,导致二次超时。
- 禁用回源:
composer config -g repo.packagist false,强制只走镜像 - 私有 Git 仓库(
git@或https://github.com/xxx)不受镜像加速,若composer.json里混着这类源,Resolving dependencies阶段会逐个尝试,拖慢整体速度 - 检查是否有 SSH 代理或
git配置阻塞:运行ssh -T git@github.com看是否卡住,如有则需清理~/.ssh/config或改用 HTTPS 地址
最易被忽略的是:镜像 URL 末尾不能带斜杠,https://mirrors.aliyun.com/composer/ 正确,https://mirrors.aliyun.com/composer// 会导致 301 重定向,多一次 HTTP 往返,刚好压垮 60 秒阈值。

















