运行 composer config repo.packagist.org 可直接查看当前实际生效的镜像地址,其优先级为项目级 > 全局配置 > 官方源,且需执行 composer clear-cache 并手动验证 URL 可达性。

直接看结果:运行 composer config repo.packagist.org 就能查到当前生效的镜像地址,不是 composer config -g repo.packagist,也不是 composer diagnose —— 后者只报错不报源。
怎么确认当前用的是哪个镜像
Composer 的镜像配置优先级是:项目级 composer.json > 当前用户全局配置(~/.composer/config.json)> 默认官方源。很多人改了全局但项目里又写了 repositories,结果查全局却没用上。
实操建议:
- 先跑
composer config repo.packagist.org,它会直接输出当前实际生效的url字段值 - 如果报错
Could not find repository 'packagist.org',说明没设镜像,走的就是官方源https://packagist.org - 想看完整配置来源,加
-v:composer config -v repo.packagist.org,会提示该配置定义在哪个文件里
为什么 composer config -g repo.packagist 常常查不到真实地址
因为老教程里写的 repo.packagist 是旧 key,Composer 1.10+ 已统一为 repo.packagist.org;而且 -g 只查全局,忽略项目级覆盖。
常见错误现象:
- 执行
composer config -g repo.packagist返回空,但装包明显走的是国内镜像 —— 很可能镜像写在项目composer.json的repositories里 - 用
composer config -g --list看到repo.packagist,但实际请求日志显示访问的是https://packagist.phpcomposer.com—— 那是因为该 key 已被新版本忽略,真正起作用的是repo.packagist.org
镜像失效或切换后不生效的典型原因
改完配置不生效,90% 不是命令没跑对,而是缓存或权限问题。
检查点:
-
composer clear-cache必须执行,否则 Composer 会继续用旧源的缓存元数据 - 如果项目里有
composer.json且含"repositories"段,它的优先级高于全局,删掉或注释掉才能让全局配置生效 - 某些镜像(如阿里云)要求 URL 末尾带
/,写成https://mirrors.aliyun.com/composer没问题,但写成https://mirrors.aliyun.com/composer/才是官方推荐格式 —— 少数情况下路径不匹配会导致 404 或降级回官方源
最易被忽略的一点:Composer 本身不校验镜像 URL 是否可达,配置写错也不会报错,只有等 composer update 时卡住或返回 Could not fetch 类错误才暴露问题。所以改完务必跑一次 composer config repo.packagist.org 确认输出值,并用 curl -I 手动测下那个地址是否返回 200。










