答案是字段名应为复数repos.packagist而非单数repo.packagist,且需同步清理项目级repositories配置、环境变量COMPOSER_REPO_PACKAGIST及缓存;否则请求仍会走镜像。

直接删掉全局配置里的 repos.packagist 字段,再清缓存,就能回到官方源——但很多人卡在“删了还是走镜像”,其实是没清干净三层配置。
为什么 composer config -g --unset repo.packagist 不生效?
字段名写错了。Composer 全局配置里真正起作用的是复数形式的 repos.packagist(注意是 repos,不是 repo)。写成单数 repo.packagist 不报错,但什么也不删。
- 正确命令是:
composer config -g --unset repos.packagist - 旧项目可能同时存在
repo.packagist和repos.packagist,得分别删:composer config -g --unset repo.packagist+composer config -g --unset repos.packagist - 删完运行
composer config -g repos.packagist,应提示Key "repos.packagist" does not exist,而不是返回 URL
项目级 repositories 配置会覆盖全局
即使全局删干净了,只要项目 composer.json 里有 "repositories" 字段,就会优先用它。常见陷阱是:"repositories": {"packagist.org": false} 这种写法等于关掉了默认源,又没给替代地址,结果包都找不到。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 进项目目录,运行
composer config repositories查看是否定义了仓库 - 手动打开
composer.json,删掉整个"repositories"块(包括花括号和里面所有内容) - 或者用命令一键清空:
composer config --unset repositories(不加-g,只作用于当前项目)
环境变量和 DNS 劫持也会绕过配置
如果 composer install 依然发请求到 mirrors.aliyun.com,但配置已确认为空,那大概率是环境变量或网络层干扰:
- 检查是否设置了
COMPOSER_REPO_PACKAGIST:Linux/macOS 执行echo $COMPOSER_REPO_PACKAGIST,Windows 执行echo %COMPOSER_REPO_PACKAGIST%;如果输出非空,用unset COMPOSER_REPO_PACKAGIST或set COMPOSER_REPO_PACKAGIST=清除 - Composer ≥2.2 启用了自动镜像重定向,阿里云、腾讯云等会在 DNS 或 HTTP 层劫持
packagist.org请求——这不是配置问题,而是网络行为,此时需换网络环境或使用代理验证 - 必须执行
composer clear-cache,否则旧镜像元数据仍被复用
最可靠的验证方式不是看配置输出,而是抓真实请求:composer require monolog/monolog --no-install -vvv 2>&1 | grep -i 'GET https'(Linux/macOS),观察日志里出现的 URL 是否为 https://repo.packagist.org。哪怕只有一处残留配置没清理,请求就还是会拐去镜像站。

















