应查当前实际请求地址而非配置项:全局用composer config -g repo.packagist,项目级用composer config repositories找packagist.org条目;配置生效需composer clear-cache,验证用-vvv看真实GET URL;华为云现用https://repo.huaweicloud.com/repository/php/,阿里云用https://mirrors.aliyun.com/composer/;镜像异常时curl -I测packages.json接口。

直接查当前生效的镜像地址
你真正该看的不是“配了啥”,而是“此刻请求走哪”——因为项目级 repositories 会覆盖全局配置,而旧键名(如 repos.packagist)可能残留但已不生效。
- 查全局实际生效源:
composer config -g repo.packagist—— 返回 JSON 就是当前用的;空或报错Could not find package repo.packagist in global config,说明走官方源https://packagist.org - 查项目级实际生效源:
composer config repositories—— 输出里找"packagist.org": { "type": "composer", "url": "..." }这一项,它才是 Composer 7+ 唯一认的主源标识符 - 别被
composer config -g --list --verbose的大段输出带偏,重点只盯repositories.packagist.org字段,其他像repositories.packagist或一堆第三方私有源都和 Packagist 镜像无关
镜像地址对了,但还是连不上?先清缓存
改完配置却仍请求旧地址,90% 是本地元数据缓存没刷新,Composer 不会自动感知配置变更。
- 必须执行:
composer clear-cache,否则composer update依然从旧缓存拉包信息 - 验证是否真走新地址:加
-vvv参数重试,比如composer -vvv require monolog/monolog,日志里出现的GET https://xxx/composer/packages.json才是真实请求 URL - 如果还失败,顺手删掉
vendor/和composer.lock(可选),彻底排除本地状态干扰
常见失效镜像与当前可用地址
很多教程里的老地址已经下线或重定向失败,尤其华为云、阿里云等厂商近年调整过路径,用错就直接 Curl error: Could not resolve host 或 404。
- 华为云当前有效地址是:
https://repo.huaweicloud.com/repository/php/(注意是repo.huaweicloud.com,不是旧版的mirrors.huaweicloud.com) - 阿里云稳定地址:
https://mirrors.aliyun.com/composer/ - 腾讯云(已停更)、PHPComposer(2020 年起不可用)、Laravel China 镜像(2020 年 8 月退出)——这些都别再试了
怎么确认镜像站本身是不是挂了
配置没错、缓存清了、地址也对,但 composer update 卡在 “Loading composer repositories”,大概率是镜像服务异常,而不是你本地问题。
- 手动 curl 测试最准:
curl -I https://mirrors.aliyun.com/composer/packages.json,返回 200 表示服务正常;403/502/超时就得换源 - 别只信浏览器访问首页——有些镜像站首页能打开,但
/packages.json接口因 CDN 或权限策略被屏蔽 - 临时切回官方源验证:
composer config -g repo.packagist composer https://packagist.org,如果立刻能跑通,基本坐实是镜像站问题
-vvv 日志里的那个真实 GET 地址,永远比任何 config list 输出更可信。










