Composer报错The process timed out_增加Composer默认运行超时限制【方案】

3次阅读

composer install/update 卡住或报“The process timed out”是因子进程(如 git clone、unzip)耗时超默认300秒被终止,需通过设置 process-timeout 配置项延长时限,而非盲目重试。

Composer报错The process timed out_增加Composer默认运行超时限制【方案】

Composer install/update 卡住或报 The process timed out

这是 Composer 在执行命令时,子进程(比如 git cloneunzip 或远程包下载)耗时超过默认阈值被强制终止。默认超时是 300 秒(5 分钟),在网速慢、包体积大、或本地资源紧张时很容易触发。

解决思路不是“加个参数重试”,而是明确告诉 Composer:“这次允许更久一点”。关键操作是设置 process-timeout 配置项。

  • 临时生效:在命令末尾加 --process-timeout=1800(单位秒,例如 1800 = 30 分钟)
  • 全局生效:运行 composer config --global process-timeout 1800,之后所有项目都用这个值
  • 仅当前项目生效:进项目目录后运行 composer config process-timeout 1800(写入 composer.jsonconfig 段)

为什么设太高也不行?process-timeout 不是越大越好

设成 3600 甚至 7200 看似“保险”,但实际会掩盖真实问题:比如网络彻底中断、Git 仓库不可达、ssh 密钥失效——这些情况本该快速失败并报错,而不是让终端挂一个小时不动。

更合理的做法是分场景调整:

  • 日常开发机(稳定网络):保持默认 300 即可
  • CI/CD 环境(如 github Actions):建议设为 600900,避免因并发拉取延迟误判
  • 离线构建或内网镜像环境:确认源可靠后可设 1800,但要同步检查 repositories 是否指向了正确的私有源

process-timeouttimeout 别搞混

Composer 配置里还有个 timeout(对应 http 请求超时),它控制的是下载单个 ZIP 或 JSON 元数据时的连接+读取时间,默认 300 秒。它和 process-timeout 是两回事:

  • process-timeout:管的是 shell 子进程(gitsvnunzip 等)总耗时
  • timeout:管的是 curlstream 下载远程文件的网络层超时
  • 两者可以同时设,比如 composer config --global timeout 600 + composer config --global process-timeout 1200

某些错误看似超时,其实根本不是 process-timeout 的问题

比如报错里带 Cloning into ... fatal: unable to access 'https://...': Failed to connect to ... port 443,或者 Could not fetch https://repo.packagist.org/packages.json, please review your configured sources——这说明网络不通或源配置失效,调高 process-timeout 没用,只会让失败来得更晚。

先做这几件事再考虑调超时:

  • 运行 composer diagnose,看输出是否提示源不可达或证书问题
  • 手动试下 curl -I https://repo.packagist.org/packages.jsongit ls-remote https://github.com/vendor/package.git HEAD
  • 检查是否开了代理但没配给 Composer:composer config --global github-oauth.github.com your_tokenhttp-proxy 配置

超时只是表象,卡住的真实原因往往藏在日志第一行或前几行,别急着改配置。

text=ZqhQzanResources