必须严格使用composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,键名单数、type值composer、url须https且末尾带斜杠,三者缺一即静默回退至packagist.org。

composer config -g repo.packagist 命令必须带末尾斜杠
不加 / 会静默回退到 packagist.org,你根本看不到报错,只觉得“换源没用”。Composer 2.2+ 遇到 https://mirrors.aliyun.com/composer(缺斜杠)会拼出错误路径如 /packages.json,直接 404 或 fallback 到官方源。
正确写法只有一行,且必须严格复制:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
repo.packagist是固定键名,写成repos.packagist(多一个s)就完全无效 - 第二个参数
composer是type字段值,不能省略或留空 - URL 必须以
https://开头,且末尾必须有/ - Windows 用户执行后建议重启终端,避免 shell 缓存旧配置
项目级 repositories 会彻底屏蔽全局镜像
只要项目根目录的 composer.json 含 "repositories" 字段,哪怕内容为空数组或只写了 {"packagist.org": false},全局配置就完全不生效。
排查方法:
- 运行
composer config -g repo.packagist,确认输出是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 执行
grep -A3 '"repositories"' composer.json,检查是否硬编码了"packagist.org"或空数组 - 若存在干扰项,手动删掉或注释掉整个
repositories字段 - 已有
composer.lock时,旧文件会固化包地址,务必删掉vendor/和composer.lock再composer install
阿里云 ECS 内网用户请改用无 HTTPS 的内网地址
如果你在阿里云 ECS 上跑 CI/CD 或部署服务,用公网 HTTPS 镜像既慢又耗流量。VPC 内网用户应切换为:http://mirrors.cloud.aliyuncs.com/composer/。
这个地址实测延迟压到 10ms 内、零丢包,但仅限阿里云内网访问——本地开发机或非阿里云服务器访问会失败。
配置命令一样:
composer config -g repo.packagist composer http://mirrors.cloud.aliyuncs.com/composer/
- 这里用的是
http://,不是 HTTPS;结尾斜杠同样不可省 - CI 流水线中若混用不同账号(如用
sudo执行),可能写进root的~/.composer/config.json,而构建用普通用户,导致配置不生效
临时验证镜像是否真正命中
怀疑配置没生效?或者想快速确认某个包能否从阿里源拉下来?用 -r 参数绕过所有配置:
composer show monolog/monolog -vvv --repository-url=https://mirrors.tencent.com/composer/
- 观察日志中
GET请求的 URL 是否含镜像域名 - 若出现
packagist.org或repo.packagist.org,说明被项目级repositories覆盖了 - CI/CD 中建议弃用全局配置,改用环境变量:
COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ composer install
现在还能用的镜像地址(2026 年实测有效):阿里云 https://mirrors.aliyun.com/composer/、腾讯云 https://mirrors.cloud.tencent.com/composer/、华为云 https://mirrors.huaweicloud.com/repository/php/。旧地址如 packagist.phpcomposer.com 已大规模返回 404。











