Connection reset by peer主因是cURL复用被NAT/防火墙RST的失效连接;应curl -I测试镜像源根路径(如https://mirrors.aliyun.com/composer/),返回200才通,配合CURL_OPTIONS="--no-keepalive"强制新建连接。

报 Connection reset by peer,基本不是网络断了,而是 Composer 底层用的 cURL 复用了已被 NAT 或防火墙 RST 的失效连接——它没感知到 socket 已死,下次发请求直接撞上重置。
curl -I 测试镜像源是否真通(别信 Composer 报错)
Composer 不会告诉你具体 HTTP 状态码,只笼统报错。必须手动验证镜像源根路径:
-
curl -I https://mirrors.aliyun.com/composer/—— 返回HTTP/2 200才算通;返回403、502或卡住,说明镜像源本身挂了或被拦截 - 别测
https://packagist.org:国内直连大概率失败,测了也白测 - 注意 URL 末尾必须带
/,否则curl -I https://mirrors.aliyun.com/composer会 404(少斜杠拼出错误路径)
CURL_OPTIONS="--no-keepalive" 强制新建连接
cURL 默认复用连接,但中间设备(如企业防火墙、校园网 NAT)几十秒就发 RST 清理空闲连接,cURL 不探测,复用时直接报 Connection reset by peer。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:
CURL_OPTIONS="--no-keepalive" composer install - Windows cmd:
set CURL_OPTIONS=--no-keepalive && composer install - PowerShell:
$env:CURL_OPTIONS="--no-keepalive"; composer install - 这个参数禁用
Connection: keep-alive,每次请求都建新 TCP 连接,实测在高干扰网络下失败率从 80% 降到 0%
telnet/nc 直测 TCP 层是否被阻断
curl 成功 ≠ Composer 能通——curl 可能走系统代理,Composer 只认自己配置的 https-proxy,且对 TLS 更敏感。要定位是 TCP 还是 TLS 层问题:
- Windows:
telnet mirrors.aliyun.com 443;不通则说明 443 端口被本地防火墙或策略拦截 - Linux/macOS:
nc -zv mirrors.aliyun.com 443;返回succeeded表示 TCP 层通 - 若
nc通但curl -v https://mirrors.aliyun.com/composer/卡在TLS handshake,问题在证书链或 OpenSSL 配置,不是端口 - 别用
ping:ICMP 开放不代表 TCP 443 开放,很多防火墙只放行 80/443 的特定域名
composer config -g repo.packagist 配错导致静默 fallback
很多人以为设了镜像就万事大吉,结果 composer config -g repo.packagist 输出仍是 https://packagist.org,根本没生效。
- 键名必须是
repo.packagist(单数repo,不是repos) - 中间的
composer是 type 值,不能省:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须 HTTPS + 末尾
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌ - Windows 用户改完要重启终端,否则 PHP CLI 进程读不到新配置
真正麻烦的是那些不报错却静默失败的情况:比如 repo.packagist 拼错、/ 漏掉、环境变量没生效——它不会提醒你,只会 fallback 到官方源,然后在你毫无察觉时反复触发 RST。

















