答案是执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/可全局切换至阿里云镜像,该命令写入~/.composer/config.json并永久生效,优先级高于项目配置,末尾斜杠和type值不可省略。

Composer 默认源在国外,国内直接用 composer install 经常卡在 Downloading... 或报 Connection timeout 错误——换国内镜像不是“锦上添花”,而是 PHP 项目能正常启动的前提。
怎么快速切换到阿里云/华为云镜像
最稳妥的方式是全局配置(对当前用户生效),执行一条命令就行:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
这条命令会把镜像地址写入 ~/.composer/config.json。如果你更信任华为云,把 URL 换成 https://repo.huaweicloud.com/composer/ 即可。
注意:别用 composer config -g packagist.org 这类错误写法——packagist.org 是域名,不是配置项名;正确键名是 repo.packagist。
立即学习“PHP免费学习笔记(深入)”;
- 执行后无需重启终端,下次
composer require就自动走镜像 - 如果项目里已有
composer.json并含repositories字段,它会优先于全局配置,此时得手动删或注释掉 -
-g表示 global,不加就是只改当前项目,容易漏配,不推荐
为什么有些包还是从 packagist.org 下载
某些包(尤其是带 dist 的 zip 包)实际由 Packagist 元数据里的 dist.url 指定下载地址,镜像站并不代理这部分流量——所以你会看到日志里混着 mirrors.aliyun.com 和 github-production-release-archive 两种域名。
这不是配置失败,是 Composer 协议设计如此。只要 composer install 能完成、没报错,就说明核心元数据已走镜像,下载慢通常只剩这一步。
- 遇到个别包卡住,可以临时加
--prefer-dist强制走压缩包(比--prefer-source快) - 若持续失败,先
composer clear-cache清掉可能损坏的缓存文件 - 别试图用 hosts 绑定
packagist.org到镜像 IP——根本无效,因为 HTTPS SNI 会暴露真实域名
团队协作时如何避免镜像配置不一致
靠每个人手动配镜像是不可靠的。推荐在项目根目录放一个 composer.json 的同级文件:composer.config.json(非标准名,但可用),然后用脚本统一注入:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/ --file composer.json
这样 composer.json 里就显式固化了镜像源,新成员 clone 后直接 composer install 即可,无需额外操作。
- 不要把
~/.composer/config.json提交进 Git——那是用户级配置,路径和权限都因人而异 - CI 环境(如 GitHub Actions)必须显式运行配置命令,否则默认仍走官方源
- 部分老旧项目用了
fxp/composer-asset-plugin,它不读repo.packagist配置,得单独设asset-packagist.org镜像,但现在基本已被废弃
镜像不是一劳永逸的事——阿里云偶尔维护,华为云有时同步延迟几小时。真遇到 Could not fetch,先 composer diag 看网络连通性,再检查镜像站首页是否公告停服,而不是立刻怀疑自己配错了。



















