项目级镜像需用 composer config --unset repositories(不加-g)清除,手动删json易出错;确认方式为 composer config repos.packagist.org 或查 composer.json 中 repositories 字段;残留原因包括 "packagist.org": false、环境变量 composer_repo_packagist 或未清缓存,须逐项排查并执行 composer clear-cache 验证。

项目级镜像不能靠 composer config -g 清除,必须直接改 composer.json 或用 composer config --unset repositories,否则 composer install 仍走镜像、报错或超时。
怎么确认当前项目用了项目级镜像
Composer 会优先读项目根目录下的 composer.json 里的 repositories 字段,只要它存在(哪怕只写了 "packagist.org": false),全局配置就完全失效。验证方式很简单:
- 运行
composer config repos.packagist.org—— 如果输出是类似{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},说明项目级镜像已生效 - 直接打开
composer.json,搜索"repositories",看是否有非空对象或"packagist.org": false这类禁用声明 - 执行
composer require monolog/monolog --no-install -vvv,滚动日志里找Downloading https://行——如果出现mirrors.aliyun.com或其他镜像域名,就是项目级在起作用
删 repositories 字段的两种可靠操作
别手写 JSON 删除,容易格式出错;也别只删 repo.packagist 这种全局字段,对项目无效。正确做法分情况:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 如果
composer.json里只有镜像配置(没私有源),直接运行:composer config --unset repositories(注意:不加-g) - 如果
repositories里混了私有源 + 镜像,想保留私有源只删镜像部分,就得手动编辑composer.json,删掉"packagist"或"packagist.org"对应的子项,但保留其他源 - 删完后务必检查:运行
composer config repositories应返回Key "repositories" does not exist或空输出
为什么删了还走镜像?三个常见漏点
清掉 repositories 后 composer install 仍连阿里云或腾讯云,大概率卡在这三处:
-
"packagist.org": false单独写在repositories里,没配替代 URL → Composer 会 fallback 到默认源失败,表现是Could not fetch packages,不是走镜像,而是根本找不到源 - 环境变量
COMPOSER_REPO_PACKAGIST被设过值(尤其 CI/CD 脚本残留),它优先级高于composer.json→ Linux/macOS 运行env | grep COMPOSER_REPO,Windows 运行echo %COMPOSER_REPO_PACKAGIST%,有输出就unset或set COMPOSER_REPO_PACKAGIST= - 缓存没清,旧的
packages.json快照还在本地 → 必须立刻执行composer clear-cache,否则所有验证都不可信
验证是否真还原成功
别只看命令有没有报错,要看到真实网络请求才作数:
- 执行
composer show laravel/framework 11.* -vvv 2>&1 | grep "Downloading" - 正确输出应含
https://repo.packagist.org,而不是任何镜像域名 - 如果仍见
mirrors.开头的地址,说明某层配置或缓存还有残留,回退到上一步逐个排查
项目级镜像的清理关键在于“精准定位作用域”,全局命令对它无效,而手动删 JSON 又容易破坏结构。最稳路径是先确认 repositories 是否存在,再用 --unset 干掉,最后清缓存+看日志——少一步,都可能白忙活。










