当前稳定可用的 composer 国内镜像仅剩阿里云、华为云、上海交大(sjtug)三个,其中阿里云为首选,地址 https://mirrors.aliyun.com/composer/,同步延迟低、开箱即用、兼容性好;华为云适合内网穿透场景但非标准路径;sjtug 适合作为北方地区备用。

现在能稳定用、免认证、全量同步的 Composer 国内镜像,只剩三个:阿里云、华为云、上海交大(SJTUG)。清华源已关闭,腾讯云同步延迟高且偶发 503,PHPComposer 和 Laravel China 镜像均已下线——别再试了。
阿里云镜像为什么是首选
地址是 https://mirrors.aliyun.com/composer/,2026 年实测同步延迟平均 1 分钟以内,CDN 覆盖广,证书兼容性好,连企业级 TLS 中间件都能握手成功。它支持 Composer 2.x 元数据格式,也兼容旧版 lock 文件解析逻辑。最关键的是:不需要任何 token 或白名单,开箱即用。
常见错误包括:
- 把 URL 写成 https://mirrors.aliyun.com/composer(少末尾斜杠),会导致请求 /composerpackages.json 404
- 漏掉中间的 composer type 参数,命令变成 composer config -g repo.packagist https://mirrors.aliyun.com/composer/,静默 fallback 到官方源
- 键名写错为 repos.packagist(多一个 s),配置直接被忽略
华为云和 SJTUG 是什么定位
华为云镜像地址是 https://mirrors.huaweicloud.com/repository/php/,适合内网穿透场景(比如在华为云 ECS 上跑 CI),但注意它不是标准 Composer 协议路径,部分私有包元数据可能缺失;SJTUG 镜像(https://packagist.mirrors.sjtug.sjtu.edu.cn/)学术网络质量高,北方地区 DNS 解析快,但偶尔有节点响应超时,建议作为阿里云的备用。
验证是否生效,只用这一条命令:composer config -g repo.packagist
输出必须是完整 JSON,形如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null、或还是 https://packagist.org,说明没写进去。
换完镜像还卡在 downloading?先清缓存
Composer 会优先读本地缓存和 composer.lock 里记录的旧元数据地址,哪怕你已经改了全局配置,它仍可能去官方源拉校验信息。
必须执行三步:
- 运行 composer clear-cache
- 删除项目下的 vendor/ 和 composer.lock
- 再跑 composer install -vvv,观察日志里是否出现 mirrors.aliyun.com
如果 curl -I https://mirrors.aliyun.com/composer/packages.json 返回 404 或 SSL certificate problem,说明系统根证书库太老,需运行 sudo update-ca-certificates(Debian/Ubuntu)或 sudo yum update ca-certificates(CentOS/RHEL)。
CI 和宝塔环境容易漏掉的关键点
全局配置 composer config -g 写的是当前用户的 ~/.composer/config.json。GitHub Actions 默认用 runner 用户,宝塔面板 Web 服务通常以 www 用户运行——它们都读不到你的个人配置。
正确做法:
- GitHub Actions 中,在 composer install 前加环境变量:COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ composer install
- 宝塔中切到对应用户执行:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
别信“Suna 镜像”之类名字——查无此源,所有声称支持的域名均无法响应 /packages.json 接口,纯属过期信息或拼写错误。











