直接查配置确认镜像源:先运行composer config -g repo.packagist,若返回带url的JSON则正在使用国内镜像,若报错“Key does not exist”则大概率走官方源,但仍需检查项目级配置和缓存。

怎么确认当前用了哪个镜像源
别猜,直接查配置。Composer 的镜像设置可能藏在全局或项目级,优先看全局是否被污染:composer config -g repo.packagist。如果返回一个带 url 的 JSON,说明你正用着某个国内镜像;如果报错 Key "repo.packagist" does not exist,那大概率已经走官方源了——但别急着信,还得往下验。
取消镜像的正确命令只有一条,写错字段就白干
执行:composer config -g --unset repos.packagist 或 composer config -g --unset repo.packagist,取决于你当初设的是复数还是单数键名。Composer 2.0+ 默认认 repos.packagist(带 s),但很多旧教程和脚本仍用 repo.packagist(不带 s)。两者互不覆盖,删错一个,另一个还在生效。
- 如果你不确定当初怎么设的,干脆两条都跑一遍:
composer config -g --unset repo.packagist和composer config -g --unset repos.packagist - 删完不生效?90% 是因为没清缓存:
composer clear-cache必须紧跟着执行 - 删掉的是配置字段,不是“恢复默认值”——Composer 没有默认值数据库,它只是“没这个字段 → 自动走
https://packagist.org”
为什么 composer require xxx 还在走镜像?
全局删干净了,但项目根目录下的 composer.json 里可能还躺着 "repositories" 块。运行 composer config -l(不带 -g)看看有没有输出含 repositories 的行。常见残留结构:
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
- 手动打开
composer.json,删掉整个"repositories"字段(注意 JSON 语法,别留逗号) - 或者用命令覆盖:
composer config --unset repositories.packagist(注意这里不是repo.,而是repositories.packagist) - 验证最终请求地址:运行
composer require monolog/monolog --no-install,盯住输出里的 URL —— 正确应是https://repo.packagist.org,不是任何mirrors.xxx
误删了别的配置怎么办
Composer 没有 --undo,也没有回收站。删错 secure-http 或 process-timeout 这类字段,不会自动恢复成“默认值”,而是触发未定义行为(比如 HTTPS 强制失效、超时无限等待)。最稳的补救方式是直接编辑配置文件:
- Windows:
C:\Users\用户名\AppData\Roaming\Composer\config.json - macOS/Linux:
~/.composer/config.json - 删之前建议先备份该文件;改完保存后,再跑一次
composer clear-cache
记住:镜像开关本质是“字段存在性判断”,不是状态切换。它轻巧,也脆弱——删对了,世界清净;删漏了,问题照旧;删多了,可能连 HTTPS 都不保。










