腾讯云镜像源生效必须同时满足三个硬性条件:键名必须为repo.packagist、type值必须显式写composer、URL必须HTTPS且末尾带/,任一缺失即静默回退官方源;验证需输出完整JSON对象{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"}。

腾讯云镜像源现在能用,但必须严格满足三个硬性条件,缺一不可:键名是 repo.packagist、type 值显式写成 composer、URL 末尾带 /。漏掉任意一个,Composer 2.x 会静默 fallback 到官方源,连错误都不报。
为什么 composer config -g repo.packagist 是唯一推荐的全局写法
Composer 2.5+ 对键名和 type 值做了强制校验,旧写法如 repos.packagist 或 repositories.packagist 全部被忽略,且不提示。你执行完命令后,必须立刻验证输出是否为完整 JSON:
-
composer config -g repo.packagist应返回{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"} - 如果只返回字符串(比如
"https://packagist.org")、空、null,或报Key not found,说明根本没写进去 - 该命令写入的是
~/.composer/config.json,但 CI 流水线、宝塔、Docker 容器往往以非登录用户运行,它们读不到这个文件
项目级配置怎么写才不被覆盖
进项目根目录后,直接运行:
腾讯云跨账号资源迁移工具,支持将账号A的VPC、CLB、NAT、CVM、安全组等资源迁移至账号B,通过CCN云联网实现跨账号网络互通,提供自动扫描、配置生成、Terraform部署功能。
composer config repo.packagist composer https://mirrors.cloud.tencent.com/composer/
这条命令会自动识别 composer.json 中已有的 repositories 结构:
- 如果
repositories是对象({}),就往里面写"packagist"键 - 如果
repositories是数组([]),就追加新项,不会破坏你已配的私有源 - 千万别手动加
"packagist.org": false——这会导致php、ext-json等基础约束校验失败
换源后还是卡在 “Loading composer repositories” 怎么办
这不是镜像失效,而是 Composer 还在读旧缓存和旧 composer.lock:
- 先清缓存:
composer clear-cache - 删掉项目下的
vendor/和composer.lock - 再跑:
composer install -vvv,观察日志第一行请求的 URL 是否含mirrors.cloud.tencent.com - 如果日志里还是
packagist.org,说明镜像根本没走通,回头检查键名、type、斜杠三要素
最常被忽略的一点:即使配置全对,php.ini 里禁用了 proc_open 或 putenv,Composer 也会降级为单线程,速度暴跌;DNS 解析到国外 IP 同样会让请求绕路——这些和镜像本身无关,但会让你误以为“腾讯云镜像又挂了”。

















