composer resolving dependencies 超时主因是 dns 解析慢、packagist 域名响应卡顿或本地 resolver 配置不当,process-timeout 和 http.timeout 在此阶段均无效;应优先排查系统级网络问题,如 dns、代理、防火墙或 ipv6 fallback 卡死。

Composer 加载依赖树(Resolving dependencies)超时,不是网络连不上,而是 DNS 解析慢、Packagist 域名响应卡顿或本地 resolver 配置不当导致的——process-timeout 和 http.timeout 在这阶段完全不生效,调了也没用。
Resolving dependencies 卡住时该看什么
这是 Composer 最早执行的阶段,本质是向 Packagist 发起 HTTP 请求获取包元数据(如 packages.json),再递归解析依赖关系。它卡住 ≠ 下载失败,而是请求发不出去或迟迟没响应。
- 运行
composer install -vvv,最后一行停在Resolving dependencies...:说明问题出在 DNS 或 HTTPS 连接建立环节 - 试
dig packagist.org或curl -v https://packagist.org/packages.json,看是否卡在 DNS 查询或 TLS 握手 - 若
curl也超时,基本可排除 Composer 配置问题,是系统级网络限制(如公司代理、防火墙、DNS 污染)
怎么快速验证和绕过 DNS 层问题
DNS 不稳是 Resolving 阶段超时的头号原因,尤其在国内或企业内网环境。别急着改 Composer 配置,先确认是不是这层堵住了。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时换 DNS:执行
echo "nameserver 114.114.114.114" | sudo tee /etc/resolv.conf(Linux/macOS),再重试 - 强制走 IPv4:加环境变量
export COMPOSER_IPV4=1,避免 IPv6 fallback 卡死 - 跳过域名解析直连镜像 IP(仅调试):先
ping mirrors.aliyun.com拿到 IP,然后在/etc/hosts里加一行xxx.xxx.xxx.xxx mirrors.aliyun.com
全局换源后仍卡在 Resolving dependencies?检查硬编码仓库
你设了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,但项目 composer.json 里有 "repositories" 字段,它会覆盖全局配置——尤其是写了 "packagist.org": false 却漏掉镜像 URL,或者误加了空仓库对象。
- 运行
composer config repos查当前生效的仓库列表,确认packagist.org是否被禁用且镜像已正确注册 - 删掉
composer.json中无意义的"repositories": []或{"type": "composer", "url": ""}这类空配置 - 私有包必须单独声明,但不要把
packagist.org的镜像逻辑混进去;镜像只加速公共包,对git@或https://github.com/类源无效
CI 环境中 Resolving 阶段更易失败,必须预置 DNS + 镜像 + 超时组合策略
CI 容器每次重建,/etc/resolv.conf 和 Composer 配置都重置。光靠本地调试有效的方案,在 CI 里大概率失效。
- CI 脚本开头加
echo "nameserver 223.5.5.5" >> /etc/resolv.conf(阿里 DNS),比等系统默认更可靠 - 必须显式设置镜像:
composer config -g repos.packagist.org.url https://mirrors.aliyun.com/composer/ -
COMPOSER_PROCESS_TIMEOUT对 Resolving 阶段无效,但http.timeout有效:用composer config -g http-timeout 600控制单次 HTTP 请求上限 - 避免在 CI 中用
--no-cache:缓存能跳过部分元数据请求,反而降低 Resolving 压力
Resolving dependencies 阶段没有“autoload”或“download”那么直观,错误现象单一但根因分散。最容易被忽略的是:你以为在调 Composer 参数,其实问题压根不在 PHP 进程里,而在系统 DNS 或容器网络栈中。










