composer config -g repo.packagist 是查看全局 Packagist 镜像配置的最直接命令,返回空表示未设全局镜像,否则显示当前生效的镜像 URL;但项目级配置优先级更高,且真实请求以网络日志为准。

composer config -g repo.packagist 是最直接的命令
执行 composer config -g repo.packagist 就能立刻看到全局配置中 Packagist 源的实际 URL。如果返回空,说明没设全局镜像;如果返回类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},那就是当前生效的镜像地址。
注意:这个命令只查全局配置(~/.composer/config.json),不包含项目级配置(./composer.json 中的 repositories)——后者优先级更高,但通常只用于临时覆盖或私有包。
项目级镜像可能覆盖全局设置
Composer 加载源的顺序是:项目 composer.json → 当前用户全局配置 → 默认官方源。所以即使 composer config -g repo.packagist 显示的是阿里云,项目根目录下 composer.json 里写了:
{
"repositories": [
{
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
]
}
那实际请求就会走 https://packagist.phpcomposer.com,而不是全局配置的地址。
- 用
composer config repo.packagist(不加-g)查项目级配置 - 用
composer config --list可同时列出所有生效配置项,含来源路径,方便定位哪一层被覆盖 - 项目级
repositories数组里第一个非packagist.org的 composer 类型源,通常就是当前活跃镜像
某些镜像会静默重定向,导致实际请求地址和配置不一致
比如配置了清华源 https://packagist.mirrors.tuna.tsinghua.edu.cn,但它的服务端可能对某些请求返回 302 跳转到 https://repo.packagist.org(尤其是当缓存未命中或元数据过期时)。这种情况下:
-
composer diagnose不会报错,但下载速度可能突然变慢 - 用
composer install -vvv查看详细日志,搜索Downloading或GET行,能抓到真实发起请求的 URL - 部分镜像(如阿里云)已停用,请求会被自动 fallback 到官方源,但不会修改你的本地配置
验证镜像是否真正生效的最快方式
运行 composer clearcache 清掉本地元数据缓存,再执行 composer show laravel/framework 10.0.0 --no-ansi(选一个稳定存在且版本明确的包):
- 如果输出里出现
https://mirrors.aliyun.com/composer/...或类似路径,说明镜像在用 - 如果显示
https://repo.packagist.org/...,说明当前走的是官方源 - 加
-vvv参数后还能看到 DNS 解析和 TCP 连接目标 IP,进一步确认是否连到了镜像服务器
别只信配置文件内容,真实网络请求才是最终判决依据。










