下载解压超时需同时调整http.timeout(控制HTTPS全周期,建议设为1200)、process-timeout(控制unzip等子进程,建议1800)和http-basic-timeout(细粒度GET超时,建议300),并确认PHP default_socket_timeout与之匹配,避免底层提前中断。

卡在Downloading https:// 或 unzip 阶段该调哪个参数
不是 process-timeout 就够用,也不是只改 http.timeout 就能解决。下载解压超时是两层问题叠加:HTTP 传输阶段 + 后续解压/克隆子进程阶段,必须同时干预。
-
http.timeout控制整个 HTTPS 请求生命周期(DNS、TLS、首字节、body 传输),默认仅 300 秒,弱网下拉一个大 ZIP 包很容易超时;设为600或1200更稳妥 -
process-timeout控制unzip、git clone、tar -xzf这类外部命令的执行上限,默认也是 300 秒,但解压几百 MB 的 dist 包可能就卡在这一步 -
http-basic-timeout(Composer 2.2+)更细粒度:它只管单次 HTTP GET 的连接和读取,比如拉packages.json或某个 ZIP 的头几 KB,不涉及整个 body 下载,适合调高到300防止握手慢导致中断
为什么改了 composer.json 的 config.timeout 没用
因为 config.timeout 是无效字段 —— Composer 根本不认这个 key。你看到的文档或旧教程里写的这个配置,早已被废弃多年。真正起效的是三个独立参数:http.timeout、process-timeout、http-basic-timeout,它们互不影响,也**不能**通过写进 composer.json 的 config 段来设置(process-timeout 和 http-basic-timeout 可以,但 http.timeout 不行)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 项目级生效:
composer config http.timeout 1200(写入当前composer.json的config) - 全局生效:
composer config -g process-timeout 1800和composer config -g http-basic-timeout 300 - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=1200 COMPOSER_PROCESS_TIMEOUT=2000 composer install
PHP 底层 socket 超时会提前掐断连接
即使你把 http.timeout 设成 1200,如果 PHP CLI 的 default_socket_timeout 是默认的 60 秒,cURL 在底层仍会在 60 秒后直接报 cURL error 28,Composer 根本收不到你设的 1200 秒。
- 查当前值:
php -i | grep default_socket_timeout - 临时改(CLI 环境):
php -d default_socket_timeout=1200 composer.phar install - 永久改:编辑
php.ini,设default_socket_timeout = 1200,注意区分 CLI 和 FPM 的配置文件
解压慢还可能不是超时,而是磁盘或权限问题
有时候日志停在 Extracting archive 或 Unzipping... 并非网络或 timeout 设置问题,而是目标目录没写权限、磁盘满、或杀毒软件实时扫描 ZIP 文件导致阻塞(尤其 Windows)。
- 加
-vvv看最后执行的命令,比如是否卡在unzip -qq ...或7z x ... - 手动运行那条命令,观察是否真卡住;若卡,尝试换目录或关杀软
- 避免
--prefer-source:它强制走git clone,比--prefer-dist(下 ZIP 再解压)更容易因 SSH/Git 卡死,且不受http.*参数控制
composer install -vvv 定位卡点,再逐层检查对应阈值和实际执行环境。

















