重试卡住是因不可恢复错误(如403、dns失败、ssl问题)导致的无效循环,应停用--retries,改用-vvv和curl -i定位dns/tls/http真实卡点并修复。

重试报错不是 Composer 在“多试几次”,而是卡在不可恢复的网络错误里反复打印 Retrying——停掉 --retries,直接定位真实失败点才是关键。
为什么 --retries=10 依然卡住不动
Composer 的重试只对可恢复错误生效(比如 CURL_ERROR 28 超时、5xx 响应),但以下错误它不会重试,却会不断重试并最终超时:
-
Connection reset by peer:镜像源返回了403或中间设备发 RST,不是网络抖动 -
Could not resolve host:DNS 污染或/etc/hosts绑定错误,解析结果始终不对 -
Redirecting to http://:本地代理/hosts 把 HTTPS 请求劫持成 HTTP 跳转闭环 -
SSL certificate problem:curl.cainfo指向了不存在或过期的证书文件
这些属于“确定性失败”,重试只是浪费时间。先停用 --retries,专注看 -vvv 输出里哪一步卡住。
用 composer install -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
并发下载失败?别碰 parallel-downloads
parallel-downloads 在 Composer 2.2+ 已弃用,应改用 http-max-concurrent-downloads:
- 它只在全局生效,且必须用
composer config -g设置;项目级composer.json中的config字段不认这个键 - 正确写法:
composer config -g http-max-concurrent-downloads 8(推荐值 6–12,过高反而触发镜像限速) - 验证是否生效:
composer config -g http-max-concurrent-downloads输出应为8,不是null或空行 - 若仍报
Could not resolve packages或卡在Downloading,说明镜像源本身限流——阿里云镜像对单 IP 并发请求有阈值,超过会返回429
企业网/校园网下反复 Connection reset by peer 怎么办
这是 NAT 环境下连接被中间设备 RST 中断的典型现象,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 cache-dir),若任一路径归属为 root,说明被 sudo composer install 污染过,需用 sudo chown -R $USER:$USER 修复——否则所有网络调优都白搭。










