Resolving dependencies卡住99%是DNS问题,需用dig验证解析、换DNS或检查hosts;Downloading卡住才调http.timeout(建议600秒),并同步调高PHP default_socket_timeout;Executing command卡住则需调整process-timeout。

Composer卡住不是配置没调对,而是你根本没连上——Resolving dependencies阶段失败,99%是DNS问题;Downloading卡住,才是超时参数该动的时候。
Resolving dependencies卡住:先别碰timeout,查DNS
这一步Composer只做域名解析,不发HTTP请求、不读代理、不认http.timeout。它在查mirrors.aliyun.com或packagist.org的IP,失败就停在这儿。
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回有效IPv4地址;若超时或无响应,说明本地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 - 用手机热点试一次——很多企业网会屏蔽
packagist.org和github.com,但热点通常直连通畅
Downloading https://卡住:调http.timeout,顺带查PHP底层
到这一步才真正发起HTTP请求,http.timeout才起作用。它控制DNS解析+TLS握手+首字节等待+整个body传输的总时间,默认仅300秒(5分钟),弱网下极易触发cURL error 28。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 项目级最稳妥:
composer config http.timeout 600,写入当前composer.json的config段,可提交、可复现 - 全局生效:
composer config -g http.timeout 600,写入~/.composer/config.json - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=1200 composer install,适合CI调试 -
php -i | grep default_socket_timeout查出的PHP CLIdefault_socket_timeout若低于你设的http.timeout(常见值是60),连接会被PHP提前掐断,务必同步调高
镜像源配置“看似成功”却无效:格式错一个字符就白配
换源命令漏斜杠、拼错键名、少type,都会导致静默失效——composer install仍走官方源,你却以为已经换成了国内镜像。
- 键名必须是
repo.packagist(注意repo是单数,不是repos) -
type值必须为composer,不能省略,也不能拼成compose - URL必须是HTTPS且末尾带
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出非法路径/composerpackages.json) - 验证是否真生效:
composer config -g repo.packagist输出必须是完整JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 换源后必须执行
composer clear-cache,否则旧缓存仍会复用失败地址
Executing command卡住:这不是网络问题,是process-timeout的事
停在Executing command (CWD: ),比如git clone或unzip,说明子进程执行太久被杀。错误里一定含[RuntimeException] The process "" exceeded the timeout,和HTTP完全无关。
-
process-timeout控制单个外部命令最大执行时间,默认300秒,和http.timeout互不干扰 - 全局改:
composer config -g process-timeout 1800(30分钟) - 项目级改:直接在
composer.json顶层加"config": {"process-timeout": 1200} - CI环境建议用环境变量兜底:
COMPOSER_PROCESS_TIMEOUT=2000,某些Composer版本对它更敏感 - 设为0表示不限时,但不推荐——万一远程Git仓库彻底不可达,会无限挂起
DNS和HTTP层参数混着调,等于在黑盒里拧螺丝;-vvv输出的最后一行才是真实卡点,盯住它再动手——否则清缓存、换源、改timeout,全白忙。

















