全局镜像源必须配置在 composer 全局 config.json 中,路径由 composer_home 决定,默认为 ~/.composer/config.json(linux/macos)或 %appdata%\composer\config.json(windows);运行 composer config --list --global 可准确查看当前全局配置路径与内容。

直接改 composer.json 不生效 —— 全局镜像源必须配置在 Composer 自己的配置文件里,不是项目级 composer.json。
全局配置文件在哪?怎么确认位置
Composer 的全局配置文件是 auth.json 和 config.json,但镜像源实际写在 config.json 中,路径由 COMPOSER_HOME 环境变量决定;没设的话默认是:
- Linux/macOS:
~/.composer/config.json - Windows:
%APPDATA%\Composer\config.json
运行 composer config --list --global 可直接看到当前生效的全局配置路径和内容,比猜路径更可靠。
用 composer config 命令设置镜像源(推荐)
手动编辑 JSON 容易格式出错,尤其少个逗号或引号就导致后续所有命令报错 JSON decode error。优先走命令行:
- 切换为阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 切回官方源:
composer config -g --unset repos.packagist - 查看当前镜像设置:
composer config -g repos.packagist
这条命令会自动维护 JSON 结构,避免手抖写坏文件。注意 -g 表示全局,漏掉就只改当前项目。
手动修改 config.json 时的关键字段和陷阱
如果非得手编,打开 config.json 后,确保 repositories 是顶层 key,且 packagist 被显式禁用:
{
"repositories": {
"packagist": false,
"packagist.org": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
常见错误:
- 写成
"packagist": {"url": "..."}—— 官方源不能直接覆盖,必须先false再另起名 - 把
repositories套在config对象里 —— 它是跟config并列的顶层字段 - URL 末尾漏了
/—— 部分镜像站(如腾讯)会 301 重定向失败,导致Could not fetch
配置后不生效?检查这三点
改完不走镜像,大概率卡在这几个地方:
- 项目目录下存在
composer.json且含repositories字段 —— 项目级配置优先级高于全局,会覆盖掉你刚设的镜像 - 用了
composer create-project且加了--repository-url参数 —— 这个参数会临时强制指定源,绕过所有配置 - 公司网络拦截了 HTTPS 或 DNS 污染 —— 试下用
curl -I https://mirrors.aliyun.com/composer/packages.json看是否能通
最稳妥的验证方式:删掉项目里的 composer.lock 和 vendor,再跑一次 composer install -v,看下载 URL 是否指向镜像站域名。











