配镜像仍报“The process timed out”是因为镜像仅加速dist包下载,不介入Git克隆、私有仓库直连、TLS握手或DNS解析;超时主因是连接中断而非下载慢,需同步调高http.timeout(建议600)和process-timeout(建议1200),并排查prefer-source、项目级repositories覆盖、COMPOSER_HOME未固化及网络拦截等问题。

为什么配了镜像还报 “The process timed out”
镜像只加速 dist 包下载,不介入 Git 克隆、私有仓库直连、TLS 握手或 DNS 解析。超时仍发生,说明问题不在“下载慢”,而在“连接断”。常见真凶:
-
prefer-source: true开启时,Composer 直连github.com,绕过镜像;此时http.timeout无效,得关掉它或改用"prefer-dist": true - 项目
composer.json中硬编码了repositories(如git@xxx或旧版https://packagist.org),会覆盖全局配置,镜像完全不生效 - CI/CD 容器每次启动都是干净环境,
COMPOSER_HOME未固化,镜像配置丢失——必须在构建脚本开头显式执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 企业防火墙或代理拦截了带
mirrors.前缀的 HTTPS 请求(尤其阿里云源),可换清华源https://mirrors.tuna.tsinghua.edu.cn/composer/试试
必须同步调的两个 timeout 参数
http.timeout 和 process-timeout 控制不同阶段,缺一不可:
-
http.timeout控制单次 HTTP 请求(DNS、TLS 握手、首字节等待、body 下载),默认仅 60 秒;国内镜像首字节延迟波动大,建议设为600:composer config -g http.timeout 600 -
process-timeout控制整个命令生命周期(含解压、脚本执行、autoloader 生成),默认 300 秒;大项目跑post-install-cmd易超,建议设为1200:composer config -g process-timeout 1200 -
http-basic.timeout是 Composer v1 废弃项,v2+ 完全不读;--timeout=600只影响命令总周期,对 HTTP 下载阶段无效
高并发场景下必须降并发数
Composer 2.x 默认并发 5–10,但在生产环境常触发镜像限流、DNS 阻塞或运营商 QoS 限速,表现为反复 curl: (28) Operation timed out 或 Connection refused:
- 执行
composer config -g repos.packagist.org.concurrent-downloads 2,将全局并发压到 2(推荐值) - 验证是否生效:
composer config -g | grep concurrent,应输出"concurrent-downloads": 2 - 该配置仅对 Composer 2.2+ 有效;低于此版本需升级,或设环境变量
COMPOSER_PARALLEL_DOWNLOADER=0 - 注意:并发下调低后,
install总耗时可能略增,但成功率显著提升,避免重试带来的二次开销
验证镜像是否真生效,不能只看 config 输出
composer config -g repo.packagist 显示 URL 不代表请求走镜像——缓存、项目级覆盖、DNS 拦截都可能导致 fallback:
立即学习“PHP免费学习笔记(深入)”;
- 实测命令:
composer show monolog/monolog -vvv 2>&1 | grep "Downloading",日志里必须出现mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn - 若看到
https://packagist.org或repo.packagist.org,说明配置未生效,优先检查字段名是否写成repos.packagist(多一个 s) - 手动验证连通性:
curl -I https://mirrors.aliyun.com/composer/packages.json,应秒回HTTP/2 200;卡住或 404 表示本地网络阻断 - PHPStorm 等 IDE 调用的是独立
composer实例,务必确认其路径与你配置的路径一致(which composer对比 Settings → PHP → Composer)



















