Composer默认直连国外源,国内不可用;查当前源应执行composer config -g repo.packagist,输出{"type":"composer","url":"https://packagist.org"}表示未切镜像,为空则可能使用旧键名;务必加-g全局生效,推荐阿里云等稳定镜像源。

Composer 默认走国外源,国内直连 packagist.org 基本不可用——超时、卡死、404 是常态。换镜像源不是“试试看”,而是必须做的第一步。
怎么查当前用的源?
别猜,直接命令确认:
composer config -g repo.packagist
如果输出是 {"type": "composer", "url": "https://packagist.org"},说明没切镜像;如果返回空,说明可能用了旧版全局配置(composer config -g repositories.packagist),得额外检查。
常见误操作:只改了项目级配置(composer config repo.packagist),却忘了加 -g 全局生效,结果新项目还是慢。
推荐镜像源及对应命令
阿里云、腾讯云、华为云镜像目前最稳,清华源偶尔同步延迟。注意:所有命令都带 -g,否则只作用于当前目录。
- 阿里云:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 腾讯云:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
- 华为云:
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
不建议用 https://packagist.phpcomposer.com(已停服)或各种“一键脚本”,容易混入非官方仓库或残留代理配置。
为什么 composer update 还是慢?
镜像源只加速包元数据(composer.json 解析和包列表下载),但实际 ZIP 包下载仍可能走原始地址——尤其当包作者在 composer.json 里硬编码了 dist.url(比如私有 GitLab 的 release 链接)。这时要靠 composer config -g github-oauth.github.com 或启用 COMPOSER_DISABLE_FUNCTIONS 强制走镜像,但后者有兼容风险。
更常见的原因是:本地 vendor/ 混乱 + composer.lock 锁了旧版本。先删 vendor 和 composer.lock,再 composer install 才能真正走新镜像。
CI/CD 环境下要注意什么?
Docker 构建或 GitHub Actions 中,不能依赖本地 -g 配置——每次都是干净环境。必须显式执行镜像设置命令,且放在 composer install 之前:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && composer install --no-interaction
另外,某些 CI 平台(如 GitLab Runner)默认禁用 HTTPS 证书校验,需补上:
composer config -g secure-http false,否则会报
The "https://mirrors.aliyun.com/composer/packages.json" file could not be downloaded: SSL operation failed。
镜像源不是一劳永逸的事——不同团队成员、不同服务器、不同 CI 流水线,都要单独配。漏掉任意一个环节,就可能让整个部署卡在 loading package information 上十分钟。


















