composer网络超时需先定位环节:卡在resolving dependencies是dns问题,须用dig验证并换dns;卡在downloading才调http.timeout(需同步调高php default_socket_timeout);the process timed out错误应调process-timeout。

Composer网络超时不是“调大timeout就能好”的简单问题,必须先定位卡在哪个环节:DNS解析、HTTP下载、子进程执行,还是 autoload 生成——调错参数只会白等。
卡在Resolving dependencies 是 DNS 问题,不是 timeout 能解决的
这一步 Composer 只做域名查询(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求,也不读 http.timeout 或代理配置。它失败,说明系统根本没拿到有效 IP。
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回 IPv4 地址;若超时或无响应,本地 DNS 被污染或不可用 - 临时改 DNS:Linux/macOS 编辑
/etc/resolv.conf,只留nameserver 8.8.8.8和nameserver 223.5.5.5 - 检查
/etc/hosts是否误把mirrors.aliyun.com指向了127.0.0.1或其他错误地址 - 用手机热点试一次——很多企业网会静默拦截
packagist.org和github.com域名
卡在Downloading https:// 才该动 http.timeout 和镜像源
只有到这一步,Composer 才真正发起 HTTP 请求,http.timeout 和 http.proxy 才起作用。默认 300 秒太短,弱网下首字节延迟高就直接断。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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 的
default_socket_timeout(查法:php -i | grep default_socket_timeout)若低于你设的http.timeout,连接会被 PHP 层提前掐断——常见值是 60,务必同步调高
The process timed out 错误该调 process-timeout,不是 http.timeout
这个错误一定含 [RuntimeException] The process "" exceeded the timeout,说明是子进程(如 git clone、unzip、post-install-cmd 脚本)执行太久被杀,和 HTTP 完全无关。
-
process-timeout控制单个外部命令最大执行时间,默认 300 秒;设为 0 表示不限时,但不推荐——万一 Git 仓库彻底不可达,会无限挂起 - 全局改:
composer config -g process-timeout 1800(30 分钟) - 项目级改:在
composer.json顶层加"config": {"process-timeout": 1200} - CI 环境建议用环境变量兜底:
COMPOSER_PROCESS_TIMEOUT=2000,某些 Composer 版本对它更敏感
换镜像比配代理更可靠,但配置容易静默失效
Composer 默认走 HTTPS,多数 HTTP 代理不支持 CONNECT 隧道,卡在 Downloading https:// 时配代理往往无效。换国内镜像源是更直接、更稳定的解法。
- 必须严格匹配键名:
repo.packagist(注意是repo单数,不是repos) -
type值必须是composer,不能省略,也不能拼成compose - URL 必须是 HTTPS 且末尾带
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出非法路径) - 验证是否真生效:
composer config -g repo.packagist输出必须是完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 换源后必须执行
composer clear-cache,否则旧缓存仍会复用失败地址
最容易被忽略的是:DNS 解析失败和 PHP 底层 socket 超时这两个“前置条件”,它们会让所有后续 timeout 设置完全失效。先确认 dig 有响应、php -i 里 default_socket_timeout 足够大,再调 Composer 配置,才真正省时间。










