正确配置华为云镜像源需严格使用 repo.packagist 键名、https://mirrors.huaweicloud.com/repository/php/composer/ 地址(含末尾斜杠),项目级配置优先于全局,且须清缓存并删除 vendor 和 composer.lock 后重装。

直接配华为云镜像源能解决 90% 的下载卡顿、超时和 404,但配置错一个字符就会静默失效——不是没生效,而是 Composer 完全忽略你写的那行。
repo.packagist 字段名写错就等于没配
Composer 源码里硬编码只认 repo.packagist 这个 key,写成 repos.packagist(多一个 s)、mirror.packagist 或 packagist.repo 都会被彻底跳过,不报错也不提示。
- ✅ 正确命令:
composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php/composer/ - ❌ 错误示例:
composer config -g repos.packagist composer https://...(静默失败) - 验证是否写入成功:
composer config -g repo.packagist,输出必须是类似{"type": "composer", "url": "https://mirrors.huaweicloud.com/repository/php/composer/"}的 JSON 对象
URL 必须带 https:// 且末尾有斜杠 /
华为云镜像地址不是“差不多就行”,少一个字符就会 404。当前唯一稳定可用的地址是 https://mirrors.huaweicloud.com/repository/php/composer/(注意路径含 /repository/php/composer/,结尾斜杠不能省)。
- ❌ 常见错误:
https://mirrors.huaweicloud.com/composer/(缺路径)、https://repo.huaweicloud.com/repository/php/(少/composer/)、http://...(被 Composer 默认的secure-http=true拦截) - 协议必须是
https://,http://地址会直接拒绝连接 - 旧教程里常见的
https://mirrors.huaweicloud.com/repository/php/已返回 404,别再试
项目级配置比全局更可靠
只要当前目录下 composer.json 里有 repositories 字段,全局配置就自动失效。多人协作或 CI 环境中,项目级配置能避免源不一致导致的 composer.lock hash 差异。
- 进项目根目录执行:
composer config repo.packagist composer https://mirrors.huaweicloud.com/repository/php/composer/(不带-g) - 该命令会自动在
composer.json中写入:"repositories": {"packagist": {"type": "composer", "url": "https://mirrors.huaweicloud.com/repository/php/composer/"}} -
packagist是固定 key 名,改成huawei或aliyun就不被识别为默认源覆盖 - 想删掉?别手动编辑
composer.json,用:composer config --unset repos.packagist
换源后还是慢?先清缓存再重装
Composer 会优先读取本地缓存和 composer.lock 里记录的元数据地址,哪怕你刚配好镜像,它也可能还在连旧 URL。
- 执行:
composer clear-cache - 删掉项目下的
vendor/和composer.lock - 再跑:
composer install -vvv,看日志里Downloading的域名是不是mirrors.huaweicloud.com,而不是packagist.org - 如果仍卡在
Resolving dependencies,那和镜像无关,是依赖图解析问题,换源也救不了
最容易被忽略的是:项目根目录下 composer.json 里哪怕只有一行 "repositories": {}(空对象),也会屏蔽全局镜像——这种配置不报错,但会让所有包都 fallback 到官方源。



















