报“connection timed out”或“could not resolve host”时,90%是系统级网络问题,非composer配置错误;应先换dns、确认策略拦截、再换镜像源并清缓存,顺序不可颠倒。

直接结论:报“Connection timed out”或“Could not resolve host”时,90%不是 Composer 配置错了,而是系统级网络卡在 DNS 解析、TLS 握手或 TCP 连接阶段——换镜像源 + 清缓存 + 调 http.timeout 是最短路径,但必须按顺序做,否则白调。
为什么 ping 不通 packagist.org 就别碰 composer config
运行 ping packagist.org 返回 “unknown host”,说明 DNS 已失败;返回 “Connection timed out” 或根本没响应,说明 TCP 层不通。这两种情况,composer config -g http.timeout 600 完全无效——它只管 HTTP 请求的读取阶段,不参与 DNS 查询或建连。此时该做的只有三件事:
- 换 DNS:Linux/macOS 改
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设 - 确认是否被策略拦截:用
curl -v https://mirrors.aliyun.com/composer/看卡在* Connected to ...还是* TLS handshake - 若卡在 TLS,临时强制 IPv4:
CURL_IPRESOLVE=4 composer install(Linux/macOS)
换阿里云镜像后仍超时,检查三个配置优先级
镜像源不是设了就生效。Composer 查找源的顺序是:项目级 composer.json 中的 repositories > 全局配置 repo.packagist > 默认官方源。常见踩坑点:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 项目
composer.json里硬编码了"packagist.org": false或自定义repositories,会完全绕过全局镜像 - 私有包用了
git@github.com:xxx/yyy.git这类 VCS 地址,镜像不代理,得单独处理代理或 SSH 配置 - 执行过
composer clear-cache后没重试,旧缓存里的错误地址可能还在内存中
process-timeout 和 http.timeout 到底管什么
这两个参数常被混用,但作用完全不同:
-
process-timeout控制整个命令(如composer install)从启动到退出的最大秒数,超时就kill -9当前进程,不管下载进行到哪一步 -
http.timeout控制每次发起 HTTP 请求时,等待连接建立 + 响应头返回的总时间(单位秒),只影响GET /packages.json这类请求,不影响git clone - CI 环境必须用环境变量固化:
COMPOSER_PROCESS_TIMEOUT=0,否则容器重启后配置丢失,且某些旧版 Composer 忽略config -g设置
curl error 28 / 7 / 56 出现时该看哪一行日志
加 -vvv 后,关键线索藏在最后一段输出里:
- 如果卡在
Downloading https://mirrors.aliyun.com/composer/p2/monolog/monolog.json,说明是 HTTP 层问题,调http.timeout+ 换 DNS - 如果卡在
Cloning to /path/to/vendor/monolog/monolog,本质是git clone失败,跟 Composer 超时无关,要查git config --global http.sslVerify false或代理设置 - 如果出现
cURL error 56: OpenSSL SSL_read,基本是中间网络设备(如企业防火墙)截断了 TLS 流量,换镜像或关 HTTPS 校验(composer config -g secure-http false)可临时绕过
真正麻烦的是非对称延迟:同一台机器,上午能装,下午超时;同一个包,A 项目成功,B 项目失败。这种时候别死磕配置,先 nslookup mirrors.aliyun.com 114.114.114.114 看 IP 是否合理,再 curl -o /dev/null -s -w '%{time_total}\n' https://mirrors.aliyun.com/composer/ 测真实耗时——数值飘忽不定,大概率是本地网络路径某段不稳定。










