卡在downloading https://时应调http-basic-timeout(composer 2.2+)或http.timeout(旧版),它控制单次http请求全过程(dns解析、tls握手、首字节等待、整个body传输),默认60秒太短,建议设300~600秒。

直接调 http-basic-timeout(Composer 2.2+)或 http.timeout(旧版),它管的是单次 HTTP 请求全过程——DNS 解析、TLS 握手、首字节等待、整个 ZIP 包传输,不是“下载慢”,而是连接阶段就卡死。默认 60 秒在国内高延迟环境下根本不够用。
卡在 Downloading https:// 时该改哪个 timeout
看 -vvv 输出最后一行:如果停在 Downloading https://,说明是单次 HTTP 请求超时,必须改 http-basic-timeout(2.2+)或 http.timeout(旧版)。它不看 process-timeout,也不受 PHP 的 default_socket_timeout 单独控制。
-
http-basic-timeout默认仅 60 秒,建议设为300~600 - 若设了
600仍失败,检查php -i | grep default_socket_timeout,若值低于 600,必须同步调高,否则 PHP 底层会提前掐断 - 临时生效:
composer install --http-basic-timeout=300(2.2+)或COMPOSER_HTTP_TIMEOUT=300 composer install - 项目级写入:
composer config http-basic-timeout 300,会存进composer.json的config段,可提交、可复现
为什么只改 http-basic-timeout 还是失败
因为 process-timeout 和 http-basic-timeout 管的是完全不同的阶段,互不替代。只改一个,大概率白调。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout控总耗时:含依赖解析、解压、运行post-install-cmd、生成 autoload 等全部步骤,默认 300 秒 -
http-basic-timeout控每个 HTTP 请求:比如拉一个 50MB ZIP,哪怕只剩 1KB 没传完,也会在这里触发超时 - 必须一起调:全局设
composer config -g process-timeout 1800+composer config -g http-basic-timeout 300 - CI 中推荐环境变量双保险:
COMPOSER_PROCESS_TIMEOUT=1800 COMPOSER_HTTP_TIMEOUT=300 composer install
换镜像源比加 timeout 更治本
80% 的 “超时” 实质是源不稳定,不是你网络差。阿里云镜像能绕过 DNS 污染、TLS 握手抖动和 packagist.org 响应延迟。
- 配置命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 配完必须清缓存:
composer clear-cache,否则仍可能读损坏的本地缓存 - 验证是否生效:
composer config -g repo.packagist应输出对应 URL;composer install --dry-run中下载链接要变成mirrors.aliyun.com - 注意:
"type": "git"的包会绕过镜像直连 GitHub,此时必须靠process-timeout+ Git 自身超时(如git config --global http.postBuffer 524288000)
中断后重试前必须清理残留状态
Composer 没有断点续传。中断后残留的破损 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 - 真正麻烦的从来不是“等多久”,而是 vendor/ 里那些看似完整、实则校验失败的包文件——它们不会自己消失,也不会被
--参数跳过










