Windows上永久改Composer全局镜像源必须用composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,且需重开终端;失效主因是未重开终端、项目级repositories字段覆盖或命令缺composer类型参数、键名错误、URL末尾缺/。

Windows 上永久改 Composer 全局镜像源,必须用 composer config -g 命令写入,且要重开终端才能生效;手动改 config.json 容易出错,不推荐。
为什么改了命令却没走镜像?
常见现象是执行完 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 后,composer install 依然慢、日志里还是 packagist.org。
- Windows 终端(CMD/PowerShell)不会自动刷新环境或配置缓存,必须关掉当前窗口,新开一个再验证
- 运行
composer config -g repo.packagist查不到值?说明没写进去——大概率是漏了中间的composer类型参数,或者用了错误键名如mirror或repos.packagist - 如果项目目录下有
composer.json且含"repositories"字段(哪怕空数组),全局设置会被完全忽略
正确命令格式与关键细节
以下任一写法在 Windows 上都可靠,但必须满足三个硬性条件:键名正确、type 显式声明、URL 以 / 结尾。
- 推荐用字符串参数方式(CMD 和 PowerShell 都兼容):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 若用 JSON 方式(PowerShell 更稳妥),注意引号嵌套:
composer config -g repo.packagist "{\"type\": \"composer\", \"url\": \"https://mirrors.aliyun.com/composer/\"}" - URL 少一个
/(比如写成https://mirrors.aliyun.com/composer),Composer 会拼出/packages.json导致 404,报错类似Could not load package - 键名必须是
repo.packagist,不是repos.packagist(多一个 s)、mirror或repository——这些全无效
验证是否真生效
别只看命令有没有报错,要确认请求实际发到了镜像域名。
- 进任意项目目录,运行:
composer diagnose,检查输出中Repo packagist.org:后面是不是你的镜像地址 - 运行
composer update -vvv | findstr "GET"(CMD)或composer update -vvv | Select-String "GET"(PowerShell),搜mirrors.aliyun.com或你配的域名 - 如果看到
GET https://packagist.org/packages.json,说明仍走官方源——优先检查项目级composer.json是否有"repositories"字段 - 执行
composer clear-cache再试,旧缓存可能让元数据匹配失败
最常被忽略的是:改完配置不重开终端,以及项目根目录下残留的 "repositories": []。这两点占 Windows 用户失效案例的八成以上。











