腾讯云镜像源已下线,无法解决超时问题;应切换至阿里云(https://mirrors.aliyun.com/composer/)或华为云等仍在维护的国内镜像源,并执行composer clear-cache、删除composer.lock和vendor、检查项目级repositories覆盖。

直接换腾讯云镜像源能解决绝大多数 Connection timed out 和 cURL error 7 类网络错误,但必须配对使用 composer config -g + composer clear-cache,漏掉任一环节都会失效。
为什么腾讯云镜像能解决超时问题
packagist.org 的 CDN 节点对国内多数出口 IP 响应慢或直接丢包,TLS 握手常卡在 Client Hello 阶段;腾讯云镜像部署在境内 IDC,复用其 COS 加速通道,443 端口连通率接近 100%,且同步延迟控制在 5 分钟内。这不是“加速”,而是绕过被限访问路径的刚需操作。
- 不改镜像时,
composer install实际请求的是https://repo.packagist.org/packages.json,国内直连大概率超时 - 切腾讯云后,所有元数据请求自动转为
https://mirrors.cloud.tencent.com/composer/packages.json - 注意:它只代理 public 包,私有包(如含
"license": "proprietary"的商业插件)仍需走原源或单独配置repositories
执行命令必须带 / 结尾且用正确键名
腾讯云镜像 URL 必须以斜杠 / 结尾,否则会返回 404;同时键名必须是 repo.packagist,不是 repo.packagist.org 或 packagist——这两个写法在 Composer 2.2+ 已废弃,会导致配置静默失败。
- ✅ 正确命令:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - ❌ 错误示例:
composer config -g repo.packagist.org https://mirrors.cloud.tencent.com/composer(缺/+ 键名错) - 验证是否写入成功:
composer config -g repo.packagist输出应为{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"}
项目级配置优先级高于全局,容易覆盖镜像设置
如果项目根目录 composer.json 中存在 "repositories" 字段,哪怕只写了一条 "packagist": false,也会让全局镜像配置完全失效——Composer 会 fallback 到默认源或报 Could not fetch。
- 检查方式:
cat composer.json | grep -A 5 repositories(Linux/macOS)或用编辑器打开查看 - 临时禁用项目级仓库:
composer config --unset repositories - 若需保留项目级仓库(如私有 VCS 包),应显式把 packagist 设为可搜索:
"packagist": true,再加腾讯云镜像条目
缓存不清,镜像等于白配
Composer 会把 packages.json 元数据缓存到本地,即使你已切镜像,旧缓存仍可能触发对 packagist.org 的请求,导致超时重现。
- 必须执行:
composer clear-cache(不是composer dump-autoload或删vendor) - Windows 用户若提示权限错误,用管理员 CMD 运行;macOS/Linux 用户若报
Permission denied,可加sudo(仅限清缓存) - 验证缓存是否清空:
ls ~/.composer/cache/应为空或仅剩repo目录下的新时间戳文件
最常被忽略的是项目级 repositories 覆盖和缓存残留——这两点导致超过 60% 的“已切换镜像但仍超时”问题。别只盯着命令有没有输对,先看 composer.json 里有没有悄悄藏了个 "packagist": false,再确认 clear-cache 是否真跑成功了。











