composer下载超时默认300秒,可通过composer config --global process-timeout 1800设为30分钟;该配置控制单进程超时,-1禁用但不推荐;php的max_execution_time和set_time_limit无效。

Composer install/update 卡在 downloading 时怎么调大超时
默认情况下,Composer 的网络请求超时是 300 秒(5 分钟),遇到大包(比如 laravel/framework 带完整 vendor 的 dist 包、或某些含二进制资源的扩展包)很容易触发 curl error 28: Operation timed out after 300000 milliseconds,直接中断安装。
这不是网络问题,而是 Composer 主动放弃——它用的是自己的超时逻辑,不是 cURL 默认值。
-
composer config --global process-timeout 1800是最常用且有效的办法,把全局超时设为 1800 秒(30 分钟) - 该配置写入
~/.composer/config.json,影响所有项目;若只想改当前项目,去掉--global - 注意:这个值只控制「单个进程」(如 git clone、curl 下载)的最长等待时间,不控制整个 install 流程总耗时
- 低于 0 的值(如
-1)表示禁用超时,但不推荐——万一网络卡死或镜像不可用,会无限挂起
为什么 set_time_limit(0) 或 php.ini 不起作用
Composer 是命令行 PHP 应用,但它自己实现了下载逻辑(用 HttpClient + cURL 封装),并不依赖 PHP 的 max_execution_time。所以改 php.ini 里的 max_execution_time 或在代码里调 set_time_limit(0) 完全无效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 真正起作用的是 Composer 自己读取的
process-timeout配置项 - 部分旧版本(github-protocols 和
http-basic等相关超时参数,但已废弃,统一归到process-timeout - Composer 2.x 后,
process-timeout同时控制git克隆和https下载的超时,不再区分协议
下载仍失败?检查是否被镜像或代理干扰
单纯加 timeout 只解决“等太久”,不解决“根本连不上”。国内用户常因镜像同步延迟或代理不稳定导致大文件下载中断,表现是反复重试、卡在 Downloading (connecting...) 或返回 503/403。
- 临时切回官方源测试:
composer config --global repo.packagist composer https://packagist.org - 确认镜像是否支持分块下载(如腾讯云、阿里云镜像一般支持;某些自建镜像可能不支持
Range请求,导致大文件断点续传失败) - 如果走公司代理,确保代理允许长连接和大响应体(部分代理默认限制响应头大小或连接空闲时间)
- 可加
-v参数看详细日志:composer update -v,重点关注最后一段 curl 请求的 URL 和状态码
更彻底的方案:跳过 dist 直接 source 安装
当 timeout 加到 30 分钟仍失败(比如网络抖动严重、镜像源本身不完整),可以强制 Composer 放弃下载 zip 包,改用 git clone 拉源码——虽然慢,但支持断点续传、更稳定。
- 运行
composer install --prefer-source或composer update --prefer-source - 原理:dist 包是预打包的 zip,source 是直接 clone GitHub/GitLab 仓库,cURL 超时不作用于 git 进程(git 自己管超时)
- 缺点:需要本地装 git,且首次 clone 更耗磁盘和时间;某些私有包若没开 public git 访问会失败
- 想默认走 source,可配
composer config --global prefer-source true
timeout 设置只是兜底手段,真正影响大文件下载成败的,往往是镜像质量、网络路径稳定性,以及你有没有意识到 Composer 的超时机制和 PHP 运行时完全无关。










