最准最快的方式是执行 composer config -g repo.packagist,直接读取全局配置文件,输出含 url 字段的 json 表示镜像已启用,为空或报错则走官方源;需注意 -g 参数、键名拼写、powershell 引号、缓存清理及环境变量干扰。

直接查全局配置:composer config -g repo.packagist
这是最准、最快的方式,三秒内确认镜像是否生效。它只读取 ~/.composer/config.json(Linux/macOS)或 %USERPROFILE%\AppData\Roaming\Composer\config.json(Windows),不依赖缓存、网络或当前项目目录。
执行后输出类似:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} → 阿里云镜像已启用
输出为空、null 或报错 Key "repo.packagist" does not exist → 当前走官方源 https://packagist.org
- 漏掉
-g参数,变成composer config repo.packagist,结果查的是当前项目级配置,容易误判 - 拼错键名,比如写成
repos.packagist(多一个 s)或repositories.packagist.org(旧版写法),新版 Composer 2.2+ 只认repo.packagist - PowerShell 下 URL 被解析出错,可加引号:
composer config -g "repo.packagist"
验证是否真走镜像:加 -vvv 看真实请求地址
配置写了 ≠ 实际请求发出去了。缓存、代理、环境变量都可能让命令“看似没生效”。
运行:composer require monolog/monolog -vvv 2>&1 | grep "GET https"
观察日志中这一行:GET https://mirrors.aliyun.com/composer/packages.json → 真的在用镜像GET https://repo.packagist.org/packages.json → 还在连官方源,镜像未生效
- 必须配合
composer clear-cache再试,否则旧元数据缓存会掩盖配置变更 - 检查
COMPOSER_REPO_PACKAGIST环境变量是否干扰:Linux/macOS 执行echo $COMPOSER_REPO_PACKAGIST,Windows cmd 执行echo %COMPOSER_REPO_PACKAGIST%;若非空,它会静默覆盖repo.packagist设置 - 临时禁用测试:
unset COMPOSER_REPO_PACKAGIST(Linux/macOS)或set COMPOSER_REPO_PACKAGIST=(Windows cmd)
别信 composer diagnose 的“Repo packagist.org is not configured”提示
这条输出不是警告,恰恰说明镜像已接管。Composer 默认内置官方源,一旦你用 repo.packagist 覆盖了它,diagnose 就会如实反馈“没配官方源”。
真正要看的是它下面这行:Repo packagist.org: https://mirrors.tuna.tsinghua.edu.cn/composer/
-
composer diagnose不验证镜像配置是否生效,它只检查 Composer 自身能否启动 - 哪怕你把 URL 拼错成
https://mirrors.aliyun.com/composer(少末尾/),diagnose仍显示 OK,但后续install必然卡在Resolving packages或直接 404 - 要暴露配置问题,只能靠
composer config -g repo.packagist输出是否为完整 JSON,以及curl -fsSL --max-time 3 https://mirrors.aliyun.com/composer/p2/monolog/monolog.json | jq -e 'has("packages")'验证 p2 接口可用性
项目级配置下怎么查?composer config repo.packagist
如果你在项目根目录下执行过 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加 -g),那配置就写进了当前项目的 composer.json 的 repositories 字段里,此时 composer config -g repo.packagist 查不到。
- 确认是否项目级配置:打开项目根目录下的
composer.json,搜索"packagist",应看到类似"packagist": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 如果
repositories是数组([])而非对象({}),composer config repo.packagist会失败,需先手动改为对象再执行 - 项目级配置优先级高于全局,一旦存在,
composer config -g显示的内容完全无关











