最稳的全局镜像设置方式是执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,该命令自动写入~/.composer/config.json并立即生效,但需注意URL末尾必须带斜杠、避免项目级repositories覆盖、及时清除缓存及检查composer.lock。

直接改 composer.json 不生效,也别碰 mirror 这种不存在的配置项——composer config 是唯一可靠入口,全局或项目级都靠它写进对应配置文件,且必须用对 key 和 URL 格式。
composer config -g repo.packagist 怎么设全局镜像
这是最稳的全局换源方式,命令会写入 ~/.composer/config.json(Windows 是 %APPDATA%\Composer\config.json),之后所有新项目、create-project、global require 都自动走镜像。
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/—— 阿里云,URL 末尾必须带/ -
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/—— 腾讯云 -
composer config -g --unset repos.packagist可清旧配置(注意是repos.packagist,不是repo.packagist) - Windows 下改完要重开终端,否则读不到新配置
- 别用
sudo composer config -g,否则写进 root 用户配置,普通用户运行时根本加载不到
项目级镜像为什么加了 repositories 还不生效
项目级生效的前提是:在项目根目录执行 composer config repo.packagist ...(不加 -g),它会把配置写进当前 composer.json 的 repositories 字段;手动编辑 composer.json 加 repositories 很容易出错。
- 错误写法:
{"repositories": [{"url": "https://mirrors.aliyun.com/composer/"}]}—— 缺type,报Invalid repository type - 正确写法(显式禁用官方源 + 指定镜像):
{ "repositories": [ { "packagist.org": false }, { "type": "composer", "url": "https://mirrors.aliyun.com/composer/" } ] } - 哪怕只有一行
"repositories": {}在composer.json里,也会屏蔽全局配置 - 改完必须执行
composer clear-cache,否则缓存的packages.json还指向旧源
为什么 composer install/update 还是连 packagist.org
不是命令没跑,而是配置被覆盖、缓存未清,或 composer.lock 里硬编码了旧 dist 地址。
- 运行
composer config -l | grep repo,确认输出里有repos.packagist.url且值是你设的镜像地址 - 删掉
vendor/和composer.lock,再composer install—— 否则 lock 文件会绕过镜像拉包 - CI/CD 环境中检查是否用了
sudo,导致配置写进了错误用户的~/.composer - 某些内网环境 DNS 解析不了
mirrors.aliyun.com,用curl -I https://mirrors.aliyun.com/composer/packages.json验证通不通
怎么验证镜像真的在用
别信“命令没报错”,要看实际 HTTP 请求发到了哪个域名。
- 运行
composer update -vvv,搜索日志里的GET行,例如:GET https://mirrors.aliyun.com/composer/p2/topthink/framework.json - 如果看到
https://packagist.org/或https://api.github.com/,说明镜像没生效,或 dist 包仍走原地址 -
composer diagnose输出中看Repo packagist.org:后面是不是你的镜像 URL - 临时验证可新建空目录,执行
composer create-project laravel/laravel demo -r https://mirrors.aliyun.com/composer/,-r强制单次指定源
最容易被忽略的是缓存和 composer.lock:改完配置不 clear-cache,90% 的“不生效”问题就出在这儿;而旧 lock 文件里存着官方源的 dist URL,不清掉它,install 就永远绕不过去。


















