应同时调高http.timeout(设300~600秒)、process-timeout(设1200秒)并正确配置阿里云镜像源(composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/),三者缺一不可,否则90%超时仍复现。

直接调高 http.timeout 和 process-timeout,再配对国内镜像源,三者缺一不可。只改一个参数,90% 的超时仍会复现。
为什么 composer install 卡在 Downloading https://...
这是典型的 HTTP 层超时,http.timeout 默认仅 60 秒,根本不够下载 laravel/framework 这类大包(常超 50MB)。镜像源只解决“慢”,不解决“断”——首字节延迟高、TLS 握手卡住、DNS 解析慢,都会触发它。
-
http.timeout控制单次 HTTP 请求全过程:DNS 查询 + TLS 握手 + 首字节等待 + body 下载 - 必须设为 300~600 秒:运行
composer config -g http.timeout 600 - 别碰
http-basic.timeout:Composer v2+ 完全不读这个字段 - 验证是否生效:执行
composer config -g http.timeout,输出应是数字600,不是字符串或空值
为什么报 The process timed out 却没在 downloading 阶段
说明问题不在网络下载,而在后续阶段:解压 ZIP、运行 post-install-cmd、生成 autoload 文件、甚至 PHP 自身的 max_execution_time 先于 Composer 触发。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout控制整个命令生命周期,含子进程(如git clone、unzip) - 默认 300 秒太短,大项目建议设为
1200:composer config -g process-timeout 1200 - 环境变量
COMPOSER_PROCESS_TIMEOUT=1200比--timeout=1200更可靠,能覆盖插件启动的子进程 - 注意:设为
0表示无限等待,适合调试,但上线环境慎用——可能掩盖权限错误或死锁
repo.packagist 配镜像源为什么总不生效
字段名写错、URL 缺尾斜杠、漏掉 composer 类型标识,三者任一出错,配置就白配。运行 composer install -vvv 最后一行若仍是 Downloading https://packagist.org/...,说明根本没切过去。
- 正确命令是:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 错误写法:
repos.packagist(多一个s)、repositories.packagist.org(v2.2+ 新语法,与旧版不兼容) - URL 必须带末尾
/:否则请求变成/composer/packages.json,404 - 末尾必须明确写
composer:漏掉就 fallback 到官方源,且composer diagnose会报Repo is not configured properly - 验证方式:
composer config -g repo.packagist输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
CI/CD 中拉包失败最常忽略的点
容器每次启动都是干净环境,COMPOSER_HOME 未固化、缓存未挂载、prefer-source: true 开着,这三项足以让所有 timeout 配置失效。
- 构建脚本开头必须显式执行镜像和 timeout 配置命令,不能依赖本地已配好的环境
- 务必加
--prefer-dist:避免走git clone,绕过 GitHub API 限流和 SSH 权限问题 - 检查项目级
composer.json中的repositories字段——它会完全覆盖全局镜像配置 -
prefer-source: true会让镜像彻底失效:镜像只代理 dist 包(ZIP/TAR),不代理 Git 克隆 - 缓存路径必须显式挂载:GitHub Actions 用
cache: $HOME/.composer/cache,否则每次重下百 MB 包
真正难处理的是混合场景:比如公共包走腾讯云镜像,私有包走 GitLab SSH,此时 http.timeout 对 SSH 无效,process-timeout 又被私有库拖垮。这种时候得拆开治理——单独为 VCS 配 git.clone-depth 或换 HTTPS 协议,而不是一股脑拉高超时。

















