Composer 2.2+ 废弃 repo.packagist,必须改用 repositories.packagist.org 顶层键配置,否则静默失效;项目级 repositories 字段会完全屏蔽全局配置,验证须通过 composer diagnose 或 -vvv 日志确认实际请求域名。

旧版本 Composer(1.x 或 2.0–2.4)用 repo.packagist 配镜像,升级到 2.2+ 后会静默失效——你配了等于没配,所有请求仍发往 packagist.org。
为什么 composer config -g repo.packagist 不再起作用
Composer 2.2 开始废弃 repo.packagist 这个键名,改用 repositories.packagist.org 作为顶层配置项。旧写法不会报错,但会被完全忽略。
- 执行
composer config -g repo.packagist看到值 ≠ 实际生效的源;必须改用composer config -g repositories.packagist.org.url验证 - 如果项目
composer.json里有"repositories"数组,它会直接屏蔽全局配置,哪怕只加了一条私有源 - Windows 下注意路径:全局配置文件在
%APPDATA%\Composer\config.json,不是~/.composer/config.json
如何验证当前生效的镜像源
别信 composer config --list 的输出,它只显示“写了什么”,不反映“用了哪个”。真正有效的判断方式是看实际请求日志:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer diagnose,找到Repo:行,域名必须是mirrors.aliyun.com或mirrors.cloud.tencent.com - 加详细日志跑一次:
composer show -p -vvv | head -5,第一行 URL 必须含你配的镜像地址,否则说明 fallback 到了官方源 - 检查
curl -I https://mirrors.aliyun.com/composer/packages.json是否返回HTTP/2 200和Content-Type: application/json
兼容旧项目时的三步强制切换法
很多老项目卡在安装、更新失败,本质是镜像没切过去,还在死连 packagist.org。直接重装 Composer 不解决问题,得从配置层穿透:
- 先清缓存:
composer clear-cache—— 注意它不清packages.json缓存,但能清掉干扰的 provider 和 dist 包 - 再设新键名:
composer config -g repositories.packagist.org composer https://mirrors.aliyun.com/composer/(末尾斜杠不能少) - 最后兜底验证:删掉项目下的
vendor和composer.lock,重新composer install,观察日志是否出现mirrors.aliyun.com
遇到 Repository is not available 别急着换源
这个错误不是“镜像坏了”,而是 Composer 收到了非标准响应:比如 404、302 跳转、HTML 页面、或缺失 /p/ API 接口。阿里云和腾讯云镜像目前稳定,但容易踩的坑是:
- 误用已停用的旧地址:
https://packagist.phpcomposer.com已返回 302,必触发该错误 - URL 少了末尾
/,如https://mirrors.aliyun.com/composer→ 404 后静默 fallback - 项目
composer.json中"repositories"是对象而非数组,导致格式解析失败
最硬核的验证方式:打开浏览器或 curl 直接访问 https://mirrors.aliyun.com/composer/p/provider-2024-07.json,能下载 JSON 文件才算真正可用。

















