重试次数过多本质是反复失败于同一不可恢复错误,非composer主动多试;根源在镜像源配置错误、dns污染或连接复用异常,需停用--retries,改用-vvv和curl -i定位真实卡点并修复。

重试次数过多不是 Composer 主动“多试几次”,而是反复失败后卡在同一个错误循环里——根源几乎都在镜像源配置、DNS 污染或连接复用异常上,不是靠调 retries 能解决的。
为什么 --retries=10 依然卡住不动
Composer 的自动重试只对可恢复错误生效(如 CURL_ERROR 28 超时、5xx 响应),但以下情况它不会重试,却会不断打印“Retrying”并最终超时:
-
Connection reset by peer:大概率是镜像源返回了403或直接 RST,不是网络抖动 -
Could not resolve host:DNS 污染或 hosts 绑定错误,解析结果始终不对 -
Redirecting to http://:本地代理/hosts 把 HTTPS 请求劫持成 HTTP 跳转闭环 -
SSL certificate problem:curl.cainfo 指向了不存在或过期的证书文件
这些错误属于“不可恢复”,重试只是浪费时间。先停掉 --retries,专注定位真实卡点。
用 -vvv + curl -I 快速锁定失败环节
别猜,直接看完整链路:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer install -vvv --repository=https://mirrors.aliyun.com/composer/—— 注意 URL 末尾必须带/,否则拼出/packages.json导致 404 - 观察输出中三段关键信息:
DNS resolution→TLS handshake→HTTP status code;卡在哪就修哪 - 同步手动验证镜像可用性:
curl -I https://mirrors.aliyun.com/composer/,必须返回HTTP/2 200,返回403或502就换源 - 已停服源(如
https://packagist.phpcomposer.com)必须从全局 config 彻底删除,composer config -g --unset repo.packagist
禁用 keep-alive 防止 NAT 环境下连接被 RST
企业网、校园网、某些云主机常见现象:cURL 复用连接时被中间设备发 RST 中断,表现为反复 Connection reset by peer。Composer 不控制连接池,全靠 cURL 底层行为:
- Linux/macOS 下临时生效:
CURL_OPTIONS="--no-keepalive" composer install - Windows PowerShell:
$env:CURL_OPTIONS="--no-keepalive"; composer install - 该参数强制每次请求新建 TCP 连接,握手开销略增,但在高干扰网络下失败率可从 >80% 降至接近 0%
- 不要长期设为默认,仅用于排查和 CI 构建阶段
检查权限污染和缓存错位这两个静默杀手
很多人反复重试却始终失败,其实是环境状态被破坏:
- 执行
ls -ld vendor/ composer.lock $(composer config --global home),若任一路径归属为root,说明被sudo composer install污染过,需修复:sudo chown -R $USER:$USER vendor/ composer.lock ~/.composer - 执行
composer clear-cache后,再确认 PHP 加载的php.ini路径:php --ini,打开对应文件检查curl.cainfo是否指向真实存在的cacert.pem绝对路径 - CI 环境务必加
--prefer-dist --no-interaction --no-scripts,跳过 git clone 和 artisan 钩子这类阻塞操作
真正难调的从来不是重试次数,而是那些不报错、不提示、但让每次请求都走错路的配置残留和权限错位。










