根本原因是composer默认源直连境外节点被限速或重置,应优先配置国内镜像源如清华源:composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/,并清理代理和dns干扰。

composer install 或 update 卡在 downloading(连接超时)
根本原因不是网络“慢”,而是 Composer 默认的 github.com 和 packagist.org 源走的是境外节点,国内直连常被重置或限速,触发 curl error 28 或 Connection timed out。单纯加大超时时间治标不治本,得换源或改协议。
- 优先用国内镜像源,比如清华、阿里云、腾讯云的 Packagist 镜像 —— 它们同步官方包,但走 CDN,延迟低、稳定
- 别手动改
composer.json的repositories,容易覆盖全局配置;直接用命令切源更安全 - 如果项目锁定了
packagist.org(比如"packagist.org": false),镜像源也无效,得先检查并清理
设置国内镜像源(推荐清华源)
执行这条命令就能全局生效,后续所有 composer install 和 composer update 都自动走镜像:
composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/
验证是否生效:运行 composer config -g repo.packagist,输出应为 {"url":"https://mirrors.tuna.tsinghua.edu.cn/composer/","type":"composer"}。如果提示 Cannot find package,说明配置没写入全局文件,可能是权限问题,可加 --no-plugins 重试。
临时跳过 SSL 验证(仅调试,不推荐长期用)
某些企业网络或代理会干扰 HTTPS 握手,导致 cURL error 60: SSL certificate problem。这不是证书过期,而是中间设备伪造了证书。此时可临时关 SSL 验证,但仅限本地开发环境:
- 运行
composer config -g secure-http false关闭强制 HTTPS - 再加
composer config -g github-protocols ["https","http"]允许降级到 HTTP(部分旧版 GitHub API 需要) - 注意:
secure-http false会让包下载走明文 HTTP,存在投毒风险,CI/生产环境绝对禁用
仍然超时?检查 DNS 和代理残留
即使换了镜像,composer update 还卡在 Downloading https://mirrors.tuna.tsinghua.edu.cn/...,大概率是本地 DNS 解析失败或系统代理污染。Composer 会继承系统 HTTP_PROXY 环境变量,哪怕你没主动设过,某些 IDE 或终端启动脚本可能悄悄加了。
- 运行
env | grep -i proxy查看是否有HTTP_PROXY、HTTPS_PROXY或NO_PROXY - 临时清空:在当前终端执行
unset HTTP_PROXY HTTPS_PROXY再试 - 检查
/etc/hosts是否误写了127.0.0.1 mirrors.tuna.tsinghua.edu.cn这类错误映射 - Windows 用户注意:Git Bash 和 CMD 的代理行为不同,建议统一用 PowerShell 测试
镜像源本身不解决 DNS 劫持,如果 ping mirrors.tuna.tsinghua.edu.cn 不通或丢包严重,就得换 DNS(比如 114.114.114.114)或确认本地防火墙规则。










