正确命令是composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/,必须严格满足键名repo.packagist、type值composer、url为https且末尾带斜杠,缺一即静默失效。

直接执行 composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/ 就能切成功,但 90% 的失败都卡在 URL 写错、少斜杠、多字母或权限问题上。
华为云镜像地址必须用这个,其他都失效
2026 年起,华为云已下线 https://mirrors.huaweicloud.com/repository/php/(404),也不再支持 https://mirrors.huaweicloud.com/repository/phpcomposer/ 等旧路径。当前唯一有效地址是:
https://repo.huaweicloud.com/repository/php/
注意三点:
- 域名是
repo.huaweicloud.com,不是mirrors.huaweicloud.com - 路径末尾必须带
/,写成.../php会导致 Composer 拼出错误请求路径,直接 404 - 不能用 HTTP,
http://开头会被 Composer 2.5+ 拒绝(默认禁用非 HTTPS 源)
命令里 type 字段不能省,也不能拼错
这条命令里的 composer 不是“Composer 工具名”,而是源的 type 值,表示这是 Packagist 兼容的 Composer 类型仓库。漏掉它会触发 fallback 行为,实际仍走官方源。
正确写法:
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
常见错误写法:
-
composer config -g repo.packagist https://repo.huaweicloud.com/repository/php/(缺composertype) -
composer config -g repos.packagist composer https://repo.huaweicloud.com/repository/php/(repos多了个s,字段名错误,Composer 完全忽略) -
composer config -g repo.packagist vcs https://...(vcs类型不匹配,无法当默认源用)
验证是否生效,别只看命令有没有报错
执行完命令后,立刻运行:
composer config -g repo.packagist
输出必须是:
{"type": "composer", "url": "https://repo.huaweicloud.com/repository/php/"}
如果输出为空、null、https://packagist.org 或任何其他值,说明没生效。此时要检查:
- 是否用了
sudo执行导致写入 root 用户配置(普通用户运行时读不到) - ~/.composer 目录权限是否异常(修复:
chown -R $USER:$USER ~/.composer) - 当前项目根目录下
composer.json是否已有"repositories"字段 —— 它优先级高于全局配置,会覆盖你刚设的镜像
只想当前项目用华为云?别动全局配置
进项目根目录,运行:
composer config repo.packagist composer https://repo.huaweicloud.com/repository/php/
它会自动在 composer.json 顶层添加 "repositories" 块,key 必须是 "packagist"(不能改成 "huawei" 或其他),否则 Composer 不识别为默认源覆盖。
删掉它也别手动改 JSON,用:
composer config --unset repos.packagist
注意:这里 key 是 repos.packagist(带 s),因为项目级配置中它是 "repositories": { "packagist": { ... } } 的嵌套结构,--unset 需按实际路径写。
最常被忽略的是:换源后 composer update 卡在 Resolving dependencies,那和镜像无关——华为云只加速下载,不解决依赖解析慢的问题。这时候该查 composer.json 里有没有冲突约束或过宽版本范围。











