composer卡在resolving dependencies或downloading主因是ipv6解析超时,应设composer_no_ipv6=1强制ipv4,再配阿里云镜像https://mirrors.aliyun.com/composer(末尾无斜杠)。

Composer 卡在 Resolving dependencies 或 Downloading,八成不是网速差,而是它先死磕 IPv6 地址几秒才 fallback 到 IPv4 —— 镜像源再快也救不了这种隐性等待。
为什么镜像源配了还超时?IPv6 解析优先级在捣鬼
即使你已切到 https://mirrors.aliyun.com/composer/,只要系统 DNS 返回 IPv6 AAAA 记录(比如 240e::xxx),Composer 就会优先尝试连接该地址。国内多数 CDN 和镜像站对 IPv6 支持不完整,结果每个请求都卡 1–2 秒等超时,再退到 IPv4。这不是镜像慢,是解析路径错了。
验证方式:运行 curl -v https://mirrors.aliyun.com/composer/packages.json,看 * Trying 后面是 IPv4 还是 IPv6 地址。
- 若看到类似
* Trying 240e:xxx:xxx:xxx...,就是 IPv6 在拖后腿 -
ping mirrors.aliyun.com输出应为118.31.67.205这类 IPv4 地址,否则说明本地 DNS 或系统解析策略已偏向 IPv6 - 别信
composer config use-ipv4 true对旧版 Composer 1.x 无效,它只在 2.2+ 生效
COMPOSER_NO_IPV6=1 是最直接有效的开关
这是 Composer 2.2+ 原生支持的环境变量,作用是跳过所有 IPv6 地址解析逻辑,从源头避免 fallback 延迟。它比改 /etc/gai.conf 或系统 DNS 更安全、更局部。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时生效(推荐 CI/CD 或调试):
COMPOSER_NO_IPV6=1 composer install - Linux/macOS 全局生效:
echo 'export COMPOSER_NO_IPV6=1' >> ~/.bashrc && source ~/.bashrc - Windows CMD:
set COMPOSER_NO_IPV6=1 && composer install - PowerShell:
$env:COMPOSER_NO_IPV6="1"; composer install - 注意:值必须是字符串
"1",不是布尔或数字 1;且该变量不影响 TLS 验证,COMPOSER_DISABLE_TLS不用动
use-ipv4 true 和 COMPOSER_IPV4=1 的区别与适用场景
use-ipv4 true 写入配置后让 Composer 主动调用 cURL 的 CURLOPT_IPRESOLVE = CURL_IPRESOLVE_V4,而 COMPOSER_IPV4=1 是强制底层 cURL 只走 IPv4 —— 但后者在部分 libcurl 版本中可能被忽略,不如前者稳定。
- 当前项目启用:
composer config use-ipv4 true(写入composer.json的config字段) - 全局启用:
composer config -g use-ipv4 true(写入~/.composer/config.json) -
COMPOSER_IPV4=1仅建议作为备选,尤其在共享主机上use-ipv4被忽略时临时顶替 - 二者都不影响已生成的
composer.lock中记录的 URL,无需手动改 lock 文件
镜像源配置错误会让所有优化失效
换源是提速前提,但配错地址、多加斜杠、没禁用默认源,都会让镜像形同虚设。阿里云镜像必须严格写成 https://mirrors.aliyun.com/composer(末尾不能有 /),否则返回 404。
- 正确设置:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer - 验证是否生效:
composer config -g repo.packagist输出应为该 URL;再用curl -I https://mirrors.aliyun.com/composer/packages.json看是否秒回200 - 若需“阿里云为主 + 官方兜底”,必须在
composer.json的repositories数组里声明,并加"packagist.org": false - 某些共享主机静默忽略
http.timeout配置,此时只能靠COMPOSER_HTTP_TIMEOUT=600环境变量
真正卡住的地方往往不是下载本身,而是每次 DNS 解析和连接建立时那几秒无响应等待。禁用 IPv6 解析是成本最低、见效最快的干预点,但必须确认 Composer 版本 ≥ 2.2,且镜像源地址写法精确——这两处最容易被忽略。










