超时需分层处理:Resolving dependencies是DNS问题,应换DNS或检查hosts;Downloading卡住调http.timeout(如600秒);Executing command卡住调process-timeout(如1200秒),三者参数互不通用。

超时不是单一参数能解决的问题,必须按卡点分层处理:Resolving dependencies 是 DNS 问题,Downloading 是 HTTP 超时,Executing command 是子进程超时,三者调的参数完全不同。
Resolving dependencies 卡住时别碰 timeout
这一步 Composer 只做域名解析(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求、不走代理、不读 http.timeout 或 process-timeout。它失败只说明 DNS 不通或被污染。
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回有效 IPv4 地址;若超时或无响应,换 DNS(如8.8.8.8) - 检查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows),确认没把镜像域名指向127.0.0.1或错误 IP - 用手机热点试一次——很多企业网会屏蔽
packagist.org和 GitHub 域名,但热点通常直连通畅
Downloading 卡在某个 HTTPS URL 时调 http.timeout
只有到这一步,Composer 才真正发起 HTTP 请求,http.timeout 才起作用。它控制单次请求从 DNS 解析、TLS 握手、首字节等待到 body 传输的总耗时,默认仅 60 秒,对大包或高延迟镜像极易触发 cURL error 28。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设为 600 秒:
composer config -g http.timeout 600 - 项目级更稳妥(尤其 CI):在
composer.json的"config"段加"http.timeout": 600 - 注意:镜像 URL 必须以
/结尾,https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出非法路径)
Executing command 卡在 git clone 或 unzip 时调 process-timeout
这一步是子进程执行阶段,比如 git clone、unzip、tar,http.timeout 完全无效。默认 300 秒太短,尤其在国内源响应慢、Git 走 SSH 或网络握手延迟高时,很容易中断。
- 全局延长:
composer config -g process-timeout 1200(建议 1200,不是无限制设 0) - 环境变量方式(CI 中更可靠):
COMPOSER_PROCESS_TIMEOUT=1200 composer install - 私有 Git 包要额外处理:确保
github-protocols设为https(composer config -g github-protocols https),避免 SSH 认证失败卡死
镜像配置失效常静默发生,必须手动验证
换源命令漏一个字符、少一个斜杠、type 写错,都会导致配置“看似成功”,实则完全不生效,且 Composer 不报错。
- 严格核对键名:
repo.packagist(不是repos.packagist或packagist.org) -
type值必须是composer,不能省略或拼成compose - 验证是否真生效:
composer config -g repo.packagist输出必须是完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 换源后必须执行
composer clear-cache,否则旧缓存仍会复用失败地址
最易被忽略的是:Resolving dependencies 和 Downloading 是两个完全独立的网络阶段,前者调 DNS,后者才走 HTTP;而 Executing command 阶段又绕开了 Composer 自身所有超时配置,直接交由系统命令执行——混用参数只会让问题更难定位。

















