必须严格使用 repo.packagist 作为键名,因其是 composer 2.5+ 唯一合法全局镜像配置键,拼写错误(如 repos.packagist)、缺末尾 / 或 type 值不为 composer 均导致静默失效。

直接执行 composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ 就行,但错一个字符(比如少末尾 /、写成 repos.packagist)就完全不生效,且零提示。
为什么 repo.packagist 是唯一合法键名
Composer 2.5+ 强制校验全局镜像配置的键名和 type 值。旧写法如 repos.packagist、repositories.packagist 或 repo.packagist.org 全部被静默忽略——命令返回成功,但配置根本没写进去。
必须严格满足三项:
-
repo.packagist(不能多 s,不能带 .org,不能拼错) -
composer(type 值,不是可选参数,漏掉即失效) -
https://mirrors.cloud.tencent.com/composer/(末尾/必须存在,否则部分版本会报Invalid repository type或 404)
配完没生效?先查这三处
镜像服务本身极稳定,99% 的“还是走 packagist.org”问题都出在本地环境:
- 运行
composer config -g repo.packagist,输出必须是完整 JSON:{"type":"composer","url":"https://mirrors.cloud.tencent.com/composer/"};如果为空或报错,说明没写成功 - 进项目目录执行
composer config repos.packagist,有输出就代表项目级composer.json中的repositories字段覆盖了全局配置 - 检查代理:
echo $http_proxy(Linux/macOS)或set http_proxy(Windows),有值就用composer config -g --unset http-proxy清掉
composer clear-cache 不是可选项
缓存机制会导致 Composer 仍读取旧的 p2/ 索引文件,行为与新配置不一致。配完必须立刻执行:
腾讯云跨账号资源迁移工具,支持将账号A的VPC、CLB、NAT、CVM、安全组等资源迁移至账号B,通过CCN云联网实现跨账号网络互通,提供自动扫描、配置生成、Terraform部署功能。
composer clear-cache
尤其当你之前用过其他镜像(比如阿里云或 phpcomposer.com),旧缓存残留会干扰验证结果。不清理,composer install 可能看起来“快了”,但实际流量未必走腾讯云。
-r 参数只在特定命令有效
-r https://mirrors.cloud.tencent.com/composer/ 这种写法仅对 composer install、composer update、composer show 生效;它会**完全忽略所有已配置源**(包括全局和项目级),所以适合调试,但不能替代正式配置。
对 composer create-project 完全无效——这个命令根本不识别 -r。等效写法只能是:
composer create-project laravel/laravel demo --repository=https://mirrors.cloud.tencent.com/composer/
注意:这里用的是 --repository,不是 -r,且参数位置不能颠倒。
最容易被忽略的是末尾斜杠和缓存清理——前者让配置静默失败,后者让配置“看似生效实则绕过”。配完不验证 composer config -g repo.packagist 输出,等于没配。










