必须手动清空或覆盖全局镜像配置,执行 composer config -g repo.packagist null 并确认输出为 null;项目级需删除 repositories 数组中 HTTPS 条目并确保结构合法,删 vendor/ 和 composer.lock 后再运行 composer install。

不能直接“重置”HTTPS仓库地址,必须显式删除或覆盖配置项,否则 Composer 会静默 fallback 到 packagist.org。
composer config -g repo.packagist 的删除操作
全局镜像配置写在 ~/.composer/config.json 里,但 composer config --unset 不支持 repo.packagist 这种嵌套键。唯一可靠方式是手动清空或覆盖:
- 执行
composer config -g repo.packagist composer https://packagist.org/—— 注意末尾带/,且中间composer是强制 type 值,不是注释 - 或者更彻底:运行
composer config -g repo.packagist null,再确认输出为null(不是空行),此时 Composer 会退回到默认源 - Windows 用户删完建议重启终端,避免 shell 缓存旧值
项目级 repositories 数组里删 HTTPS 条目
如果镜像写在项目 composer.json 的 "repositories" 数组里(常见于团队协作场景),不能只删 URL,还要注意结构合法性:
- 确保
"repositories"是顶层数组([]),不是对象({})—— 否则 Composer 忽略整个字段 - 删掉对应镜像项后,检查是否还留有
{"packagist.org": false}这类禁用项;若只剩它,Composer 仍无法拉包,需一并删掉或补回官方源 - 删完立即运行
composer install前,先删vendor/和composer.lock,否则旧 lock 文件会固化过期地址
为什么 unset repo.packagist 失败还查不到错误
因为 composer config --unset repo.packagist 实际上不生效——Composer 不识别这个语法,命令会静默忽略,不报错也不提示。你看到的“成功返回”,只是 shell 没崩,不代表配置被删了。
- 验证是否真删掉:必须单独跑
composer config -g repo.packagist,输出应为null或完全没这一行(Key not found) - 如果输出仍是
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},说明还在;别信命令执行完就完事 - 项目里存在
"repositories": [](空数组)也会导致全局配置失效,这种干扰项比想象中更常见
最易被跳过的动作是删 composer.lock 和验证输出值。哪怕你把命令复制得一字不差,只要没确认 composer config -g repo.packagist 返回 null 或消失,就等于没重置。


















