卡在Resolving dependencies是DNS解析失败,非网络或镜像问题;需用dig验证mirrors.aliyun.com解析、检查hosts文件、临时更换DNS(如8.8.8.8)、用手机热点测试,并确认镜像配置正确(repo.packagist、type composer、URL末尾带/)。

换源后仍卡在 Resolving dependencies 是 DNS 问题
这一步根本没发 HTTP 请求,只是查 mirrors.aliyun.com 的 IP 地址。哪怕你已经执行了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,只要 DNS 解析失败,就会卡住不动,且不报错。
验证方法:dig mirrors.aliyun.com @8.8.8.8。若无响应或超时,说明本地 DNS 被污染或不可用。
- 临时改 DNS:Linux/macOS 编辑
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误将mirrors.aliyun.com指向了127.0.0.1或其他错误 IP - 用手机热点试一次——很多企业网会屏蔽镜像域名解析,但热点通常直连通畅
卡在 Downloading 才轮到 http.timeout 和 process-timeout
只有到了这一步,Composer 才真正发起 HTTP 下载请求。此时配置的 http.timeout 和 process-timeout 才起作用。很多人误以为换源就万事大吉,其实这两个参数才是下载阶段的命门。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局延长 HTTP 单次连接/读取超时:
composer config -g http.timeout 600 - 真正控制整体流程的是
process-timeout(默认仅 300 秒),必须设高:composer config -g process-timeout 1800 - CI 环境更推荐用环境变量:
COMPOSER_PROCESS_TIMEOUT=1800,避免容器重启后丢失配置 - 注意:
config.timeout字段写在composer.json里完全无效,它只存在于旧版文档误导中
镜像 URL 格式错一个字符就静默失效
换源命令看似成功,但输出 composer config -g repo.packagist 如果不是完整 JSON(如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}),说明配置根本没生效。
- 键名必须是
repo.packagist(repo是单数,不是repos) -
type值必须显式写为"composer",不能省略或拼错 -
url必须以https://开头,且末尾带斜杠:https://mirrors.aliyun.com/composer/✅,少斜杠会拼出非法路径/composerpackages.json❌ - 换源后必须执行
composer clear-cache,否则旧缓存仍走失败地址
某些包根本不走镜像,得单独处理
阿里云镜像只代理 Packagist 公共包,对 "type": "git"、github.com 或私有 VCS 包完全无效。这类包会绕过镜像直连 GitHub,此时超时其实是 git clone 卡在 DNS 或握手阶段。
- 确认项目是否含
repositories字段硬编码了 GitHub/GitLab 源,优先级高于全局镜像 - 为 Git 配置超时:
git config --global core.sshCommand "ssh -o ConnectTimeout=30" - 公司网环境下,可能需配代理:
composer config -g http.proxy http://127.0.0.1:8080(注意是http.proxy,不是https.proxy) - 若用
git@协议,确保 SSH key 已加载且 GitHub 可达:ssh -T git@github.com
最常被忽略的一点:process-timeout 控制的是每个外部命令(比如 git clone、unzip)的最大执行时间,不是整个 composer install 流程。它一旦触发,错误信息就是 The process timed out,而不是网络类报错——这时候调 DNS 或换源都没用,只能加时间或查脚本阻塞点。

















