报“connection timed out”或“could not resolve host”时,90%是系统级网络问题,需先换dns、确认策略拦截、再换镜像源并清缓存,顺序不可颠倒;http.timeout仅对http层有效,dns失败时完全无效。

报“Connection timed out”或“Could not resolve host”时,90%不是 Composer 配置错了,而是系统级网络卡在 DNS 解析、TLS 握手或 TCP 连接阶段——换镜像源 + 清缓存 + 调 http.timeout 是最短路径,但必须按顺序做,否则白调。
卡在 “Resolving dependencies” 就不动?先看 DNS 是否通
这一步根本没发 HTTP 请求,http.timeout 完全无效。Composer 此时正在查 packagist.org 的 IP 地址。
- 运行
ping packagist.org:返回unknown host→ DNS 解析失败,立刻换 DNS(Linux/macOS 改/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设) - 能 ping 通但
curl -I https://packagist.org卡住或报Failed to connect→ 可能是代理拦截、防火墙屏蔽或 TLS 握手失败 - 手机热点一试便知:很多企业/校园网会统一屏蔽
packagist.org和github.com
卡在 “Downloading https://…”?调 http.timeout 才管用
这是真正的 HTTP 层超时,http.timeout 控制每次请求的连接 + 响应头返回总时间(含 DNS、TLS、首字节等待),默认仅 60 秒,对国内镜像或大包明显不够。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局生效:
composer config -g http.timeout 600 - 项目级更稳妥(CI 友好):
composer.json里加"config": { "http": { "timeout": 600 } } - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=600 composer install - 注意:
process-timeout不影响这一步,它只管子进程(如git clone)执行时长
换了镜像还超时?检查配置优先级和缓存
镜像不是设了就生效。Composer 查找源的顺序是:项目级 composer.json 中的 repositories > 全局配置 repo.packagist > 默认官方源。常见踩坑点:
- 执行
composer clear-cache:旧缓存里的错误地址可能还在内存中 - 检查
composer config -g repo.packagist看全局是否生效,再运行composer config repo.packagist(不加-g)确认项目级有没有硬编码覆盖 - 阿里云镜像正确地址是
https://mirrors.aliyun.com/composer/,末尾斜杠不能少;清华镜像同理,少/会 404 -
composer diagnose硬编码只连https://packagist.org,它失败 ≠ 你日常install不能用;验证镜像是否真可用,跑composer show -p | head -5
报 cURL error 28 / 7 / 56?盯住 -vvv 最后一行输出
不同错误码对应不同故障层,关键线索藏在 -vvv 输出的最后一段:
- 卡在
Downloading https://mirrors.aliyun.com/composer/p2/xxx.json→ HTTP 层问题,调http.timeout+ 换 DNS - 卡在
Cloning to /path/to/vendor/xxx→ 本质是git clone失败,跟 Composer 超时无关,要查git config --global http.sslVerify或代理设置 - 卡在
Executing command (CWD: ...)→ 子进程执行超时,该调process-timeout或环境变量COMPOSER_PROCESS_TIMEOUT - 报
cURL error 60或 SSL 证书问题 → 不是超时,是系统 CA 证书过旧或中间人代理注入了自签名证书,别关验证,优先更新ca-certificates包或设cafile
真正麻烦的不是超时值本身,而是网络路径中某一段(DNS、TLS、中间代理、镜像节点)出现非对称延迟——它可能只影响特定包、特定时刻,所以单纯拉长 http.timeout 是必要但不充分的。留个心眼:如果调到 600 还超时,先 ping 和 curl -v 对应镜像域名,看卡在哪一环。










