composer卡在downloading是ipv6解析超时所致,应设composer_no_ipv6=1强制ipv4;卡在resolving dependencies则是sat求解器版本冲突问题,与网络无关。

Composer安装卡在Resolving dependencies或Downloading,大概率不是网速慢,而是IPv6解析失败后硬等超时才回退IPv4——每个请求多耗1–2秒,叠加后直接卡死。别调http-timeout,先关IPv6。
怎么确认是IPv6导致卡住
不靠猜,看日志和系统行为:
- 加
-vvv运行composer install,最后几行如果反复出现[2a02:fc00::1]、::ffff:185.199.108.153这类地址,基本锁定 - 手动测:
curl -v https://packagist.org 2>&1 | grep "Connected to",若连的是IPv6地址且卡住,就是它 -
ping6 packagist.org(Linux/macOS)或ping -6 packagist.org(Windows)不通,说明本地IPv6路径不可用 -
composer diagnose里出现curl error 7或Connection refused,且目标IP是IPv6格式,不用再验证了
临时禁用IPv6最稳的方式:COMPOSER_NO_IPV6=1
这是Composer 2.2+原生支持的开关,不依赖cURL配置、不改系统设置、不影响其他进程,CI/CD里也推荐用:
- Linux/macOS:
COMPOSER_NO_IPV6=1 composer install - Windows PowerShell:
$env:COMPOSER_NO_IPV6="1"; composer install - Windows CMD:
set COMPOSER_NO_IPV6=1 && composer install
注意:COMPOSER_NO_IPV6=1只跳过IPv6地址解析逻辑,不会关闭TLS、不绕过证书校验,安全性和功能完全不变。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级或全局启用use-ipv4配置
适合长期使用,但要注意版本兼容性:
- 当前项目生效:
composer config use-ipv4 true(写入项目composer.json的config字段) - 全局生效:
composer config -g use-ipv4 true(写入~/.composer/config.json) - Composer 1.x不识别
use-ipv4,旧版本必须用COMPOSER_NO_IPV6=1 - 执行后无需清缓存,但已生成的
composer.lock中源URL不会自动更新
别碰系统级IPv6配置,除非你清楚后果
有人建议改/etc/gai.conf或禁用系统IPv6,这会影响所有网络工具(git、curl、npm等),得不偿失:
-
precedence ::ffff:0:0/96 100确实能提升IPv4映射地址优先级,但只应在纯IPv6环境(如某些教育网容器)下由运维谨慎操作 -
/etc/hosts硬绑定镜像域名到IPv4地址(如118.31.67.205 mirrors.aliyun.com)可作为补充手段,但需确保IP不变更 - 换阿里云镜像源
https://mirrors.aliyun.com/composer/本身已做协议适配,配合COMPOSER_NO_IPV6=1才是国内最稳组合
真正容易被忽略的是:卡在Resolving dependencies和Downloading是两类问题,前者跟IPv6无关,后者才是。盯紧-vvv输出的最后一行,别让错误归因跑偏。










