永久设置process-timeout需执行composer config -g process-timeout 1800写入全局配置,它专控git clone、unzip等子进程超时,默认300秒易卡住;同时须同步调整http-basic-timeout和php default_socket_timeout,并换用国内镜像源。

永久设置 process-timeout 控制 git clone 和解压超时
process-timeout 管的是 git clone、unzip、post-install-cmd 这类子进程,不是 HTTP 下载。默认 300 秒,在拉 "type": "git" 包(比如 "laravel/framework": "dev-main")时极易卡住。
它和 http-basic-timeout 完全无关,设再大也救不了下载 ZIP 失败。
- 全局永久生效(推荐):
composer config -g process-timeout 1800(写入~/.composer/config.json) - 项目级生效(可提交进仓库):
composer config process-timeout 1200(写入当前composer.json的config段) - 设为
0表示禁用超时,但不建议长期使用——网络卡死或 SSH 握手失败时会无限挂起
永久设置 http-basic-timeout 控制单次 HTTP 请求超时
这个参数只在 Composer 2.2+ 支持,管的是每个 GET 请求的连接 + 读取总时间,默认仅 60 秒。错误里带 cURL error 28、反复 retry 或直接报 Connection timed out,基本就是它在作祟。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局永久生效:
composer config -g http-basic-timeout 300 - 项目级生效:
composer config http-basic-timeout 240 -
http-basic-timeout不影响 DNS 解析阶段——那一步靠系统dig或/etc/hosts,跟 Composer 配置无关
别漏掉 PHP 底层 socket 超时同步调整
Composer 的 http-basic-timeout 再大,如果 PHP 的 default_socket_timeout 更小,连接照样被提前掐断。常见 CLI 默认值是 60 秒,远低于你设的 300。
- 查当前值:
php -i | grep default_socket_timeout - 临时覆盖(CI 中常用):
php -d default_socket_timeout=300 composer install - 永久修改需改
php.ini(CLI 版本),确认是php -i | grep "Loaded Configuration File"输出的那个
换镜像源比加 timeout 更治本
单纯调高 timeout 是“等得更久”,不是“下得更快”。国内用户不换源,process-timeout 和 http-basic-timeout 再怎么调都容易反复失败。
- 阿里云镜像(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(注意末尾斜杠不能少) - 换源后必须清缓存:
composer clear-cache,否则旧包地址仍会复用 - 验证是否生效:
composer config -g repo.packagist输出应为完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
process-timeout、http-basic-timeout、default_socket_timeout)必须同时检查并协调,缺一不可;而换源这步,很多人拖到反复失败五次之后才想起来做。










