composer install/update 报 connection timed out 需同步调高 process-timeout(默认300秒)、http.timeout(默认60秒)和 php 的 default_socket_timeout(常为60秒),三者任一过低均会导致提前中断;推荐设为1800、600、600,并搭配阿里云镜像源加速。

Composer install/update 时提示 Connection timed out 怎么办
默认情况下,Composer 的 HTTP 请求超时是 300 秒(5 分钟),但实际触发 timeout 的时机比这更早——它同时受 process-timeout 和底层 cURL 的 default_socket_timeout 影响。遇到拉包卡住、报 Connection timed out 或 cURL error 28: Operation timed out,不能只调一个参数。
三个关键 timeout 配置必须一起看
Composer 的超时不是单点控制,而是分层生效:
-
process-timeout:控制单个命令(如composer install)整体执行上限,默认 300 秒;超时后直接 kill 进程 -
timeout(HTTP 层):控制每个 HTTP 请求的 socket 超时,默认 60 秒;影响packagist.org元数据获取和 ZIP 下载 - PHP 的
default_socket_timeout:cURL 底层依赖它,若 PHP.ini 中设为 60,即使 Composer 设了 300 也可能被截断
所以光改 composer config process-timeout 1800 不一定有用——得确认后两者也同步放宽。
实操:三步延长超时(推荐组合)
在项目根目录下运行以下命令,覆盖全局和当前项目的配置:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer config process-timeout 1800 composer config --global process-timeout 1800 composer config http.timeout 600
然后检查 PHP 配置是否拖后腿:
- 运行
php -i | grep default_socket_timeout,确认输出值 ≥ 600 - 如果太小,在
php.ini中加一行:default_socket_timeout = 600,重启 CLI 环境(比如重新打开终端) - 国内用户强烈建议搭配镜像源:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/,能绕过大量网络抖动
为什么有时候改了还是 timeout
常见被忽略的点:
- 某些 CI 环境(如 GitHub Actions)会强制限制 job 总时长,Composer 自身超时设置再大也没用
- 使用
--no-plugins可能绕过某些插件导致的隐式阻塞,但不解决根本网络问题 -
composer update比install更容易超时,因为要实时查大量包版本;可先composer install再局部update vendor/package - 代理或防火墙可能主动中断空闲连接,此时需要调整系统级 TCP keepalive,而非 Composer 配置
真正卡住的时候,先 composer install -vvv 看停在哪一步,比盲目调大 timeout 更有效。










