答案是先验证dns解析与镜像可达性,再正确配置repo.packagist镜像源、清缓存,最后同步调高process-timeout和http-basic-timeout。

Connection timed out、failed to open stream: Connection timed out 或 cURL error 28 这类错误,**不是证书问题,也不是 TLS 配置错误**——Composer 默认用系统 cURL + OpenSSL,只要 PHP 能跑 curl -I https://mirrors.aliyun.com/composer/ 成功,就说明 HTTPS 连接能力正常。真正卡住的,是 DNS 解析、TCP 连接建立、或镜像源响应慢这三步。
卡在 Loading composer repositories 是 DNS 或镜像配置失效
这一步 Composer 只做域名解析(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求,也不走代理、不读 http.timeout。哪怕你配了代理、调高了超时,它也完全无视。
- 运行
dig mirrors.aliyun.com @8.8.8.8,看是否返回有效 IPv4 地址;若超时或无响应,说明本地 DNS 不可用或被污染 - 检查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)是否误把mirrors.aliyun.com指向了127.0.0.1或其他错误 IP - 确认镜像配置键名和格式:必须是
repo.packagist(不是repos.packagist),type必须为composer,URL 必须以/结尾:https://mirrors.aliyun.com/composer/✅,少斜杠会拼出非法路径 - 执行
composer config -g repo.packagist,输出应为完整 JSON,例如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};若只输出 URL 或报错,说明配置根本没生效
卡在 Downloading 后报超时,要同时调高两个 timeout
到这一步才真正发起 HTTPS 请求。但 Composer 内部有双重超时控制:process-timeout 管整个命令生命周期,http-basic-timeout 管单次 HTTP 请求(连接+读取)。只改一个,很可能白改。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设长一点:
composer config -g process-timeout 1800(30 分钟) +composer config -g http-basic-timeout 300(5 分钟) - 临时调试更稳妥:
composer install --timeout=1200 --http-basic-timeout=240(仅本次生效,CI 中推荐) -
http-basic-timeout仅 Composer 2.2+ 支持;旧版本只能靠--timeout和换镜像硬扛 - 别设
0:不限时可能卡死无响应,尤其在 CI 容器里
curl -I 验证镜像源是否真可达
别信“换源成功”这种假象。很多失败是因为镜像 URL 格式错、被防火墙拦截、或 CDN 节点异常,但 Composer 报错不提示具体原因。
- 手动测:
curl -I -v https://mirrors.aliyun.com/composer/packages.json 2>&1 | head -20,看是否返回HTTP/2 200或HTTP/1.1 200 OK - 如果返回
Connection refused或卡住不动,说明网络层不通,此时调http-basic-timeout完全无效 - 公司网常见情况:能 ping 通但
curl -I失败 → 很可能是出口策略屏蔽了 HTTPS 流量,换手机热点一试便知 - 阿里云镜像偶尔会返回
503 Service Temporarily Unavailable,这时换腾讯云镜像:composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
最常被忽略的一点:换源后不 composer clear-cache,旧缓存里的失败地址还在复用,重试照样失败。DNS、镜像、timeout 三者缺一不可,但顺序不能乱——先确保能解析、再确认镜像 URL 可达、最后才调超时参数。










