composer安装超时怎么办_composer连接超时解决办法汇总【方案】

9次阅读

composer install 超时主因是默认配置不适应CI/企业网环境:300秒超时、2次重试、无缓存、强依赖gitHub认证;应优先换阿里云镜像、调高process-timeout与http-timeout、启用缓存及代理配置。

composer安装超时怎么办_composer连接超时解决办法汇总【方案】

composer install 超时不是网络慢的锅,而是默认配置在 CI 或企业网环境下天然“不耐受”——300 秒超时、2 次重试、无缓存、强依赖 github 交互认证,四者叠加,失败是常态,成功才需要运气。

改镜像源 + 调超时时间是最小成本见效方案

国内直连 packagist.org 基本等于裸奔:DNS 解析卡顿、TLS 握手失败、CDN 回源延迟,都会触发 The process timed out。换源不是“加速”,是绕过故障链路。

  • 全局切阿里云镜像:
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 同时调高两个关键超时(缺一不可):
    composer config -g process-timeout 1800
    composer config -g http-timeout 600

    process-timeout 控制整个命令生命周期,http-timeout 控制单次 HTTP 请求;设成 0 表示禁用,但 CI 中不建议,稳比快重要

  • 验证是否生效:
    composer config -l | grep -E "(repo|timeout)"

CI 环境必须显式启用缓存和降级策略

CI 每次都是全新容器,不挂载缓存就等于每次重下 100+ MB 的 zip 包——这不是超时,是自找压力。

  • 强制走 dist 包(跳过 git clone):--prefer-dist
  • 关掉所有干扰项:--no-interaction --no-progress --no-scripts(尤其 --no-scripts 能避开 php artisan key:generate 等卡死钩子)
  • 复用 Composer 全局缓存目录:GitHub Actions 中加 cache: $HOME/.composer/cachegitlab CI 中用 cache: key: composer-cache paths: [$HOME/.composer/cache]
  • 环境变量兜底:
    COMPOSER_PROCESS_TIMEOUT=2000
    COMPOSER_AUTH='{"github-oauth": {"github.com": "xxx"}}'

    避免因未登录 GitHub 触发限流(403 不报错,只静默卡住)

公司内网/代理环境要同时配 HTTP_PROXY 和 HTTPS_PROXY

只设 HTTP_PROXY 是常见错误。Composer 默认全走 HTTPS,不设 HTTPS_PROXY 就会直连,而直连在防火墙后必然 Connection timed out

  • linux/macos
    export HTTP_PROXY=http://proxy.company.com:8080
    export HTTPS_PROXY=http://proxy.company.com:8080
  • windows cmd:
    set HTTP_PROXY=http://proxy.company.com:8080
    set HTTPS_PROXY=http://proxy.company.com:8080
  • 若企业代理使用自签名证书,还需临时禁用校验:
    git config --global http.sslVerify false

    (仅限内网可信环境)

别信“重装 Composer”或“升级 PHP”,先看日志在哪卡住

超时位置决定解法:下载阶段卡?执行脚本卡?还是 DNS 解析卡?盲目调参数不如加个 -v 看清最后一行输出。

  • 加详细日志:composer install -v,观察停在 Downloading ... 还是 Executing command (CWD): php artisan ...
  • 如果是 DNS 问题,ping mirrors.aliyun.com 通但 curl -I https://mirrors.aliyun.com/composer/packages.json 不通,大概率是 TLS 版本或 SNI 被拦截
  • 清理缓存不是万能解药,但值得试:
    composer clear-cache

    (注意:Windows 缓存路径是 %appDATA%Composer

真正难处理的不是超时本身,而是把“网络抖动”误判为“配置错误”——结果反复调 process-timeout 却忽略 HTTPS_PROXY 没配,或者在没开缓存的 CI 里硬扛 5 分钟下载。稳住节奏:先换源、再配代理、然后挂缓存、最后看日志定位卡点。

text=ZqhQzanResources