必须同时配置http-proxy和https-proxy,因Composer对HTTP/HTTPS请求分路由,所有仓库均走HTTPS,仅配http-proxy会导致HTTPS请求静默直连而卡在Loading composer repositories或报cURL error 28。

只配 http-proxy 一定失败,必须同时设 https-proxy
Composer 对 HTTP 和 HTTPS 请求走两套完全独立的代理路由:所有包仓库(packagist.org、GitHub API、镜像源)都走 HTTPS,只配 http-proxy 会导致这些请求静默 fallback 到直连,结果就是卡在 Loading composer repositories 或反复报 cURL error 28,却无明确提示。
正确写法:https-proxy 的值协议头必须是 http://,哪怕你的代理服务监听的是 HTTPS 端口。例如:
-
http://127.0.0.1:7890(Clash/Proxyman 默认端口) -
http://user:pa%40ss%2Fword@127.0.0.1:8080(密码含@或/必须 URL 编码)
验证是否生效:composer config -g --list | grep -E "(http|https)-proxy",必须看到两行且格式合规。
http.timeout 和 process-timeout 必须一起调高
代理链路通了,不代表下载就稳——默认超时仍太短:
-
http.timeout控制单次 HTTPS 请求的 DNS 解析 + TLS 握手 + 首字节等待 + body 传输总时长,默认仅 300 秒,弱网下极易触发cURL error 28 -
process-timeout控制外部命令(如git clone、unzip)最大执行时间,默认 300 秒,Git 类包下载失败时它才真正起作用
只改一个大概率仍失败。推荐组合:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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+composer config -g process-timeout 1800 - 临时调试(优先级最高):
COMPOSER_HTTP_TIMEOUT=600 COMPOSER_PROCESS_TIMEOUT=1800 composer install
注意:php -i | grep default_socket_timeout 查出的 PHP 值若低于你设的 http.timeout(常见为 60),会提前掐断连接,必须同步调高。
代理配好后还卡在 Downloading https://?检查三处隐形干扰
即使代理和 timeout 都设对,仍可能卡住,常见原因:
- 镜像地址末尾多了一个
/,导致拼出https://mirrors.aliyun.com/composer//packages.json→ 404 - 项目
composer.json里写了repositories字段,会直接覆盖全局repo.packagist配置 - 系统级 HTTPS 扫描(如某些杀软、企业 NTLM 代理)会让 TLS 握手卡在
TLSv1.3 (IN), TLS handshake那一步,curl测通,Composer 却静默超时
NTLM 代理用户需额外引入中转层(如 cntlm 或 px),让 Composer 的 http-proxy 和 https-proxy 都指向 http://127.0.0.1:3128,否则必报 407 Proxy Authentication Required。
中断后重试前不清理残留,90% 会复现失败
Composer 没有断点续传。一次中断后,vendor/ 下可能残留破损 ZIP、截断的 installed.json 或卡死的临时目录,后续命令会持续读取这些坏文件。
- 不要直接删整个
vendor/—— 这会导致autoload.php缺失,后续命令直接报错 - 精准清理:
rm vendor/autoload.php+rm -rf vendor/composer/,再运行composer dump-autoload→composer install - 若仍报
Failed to extract或Content-Length mismatch,说明本地缓存已损坏,必须composer clear-cache
真正麻烦的从来不是“等多久”,而是那些看似完整、实则校验失败的包文件——它们不会自己消失,也不会被 -- 参数跳过。

















