composer 2.2+已弃用repo.packagist键名,必须改用repositories.packagist.org.type和.url双配置,且项目级repositories字段会无条件覆盖全局设置,需清缓存、删vendor与composer.lock才能生效。

composer config -g repo.packagist 有输出但不生效?键名已废弃
Composer 2.2+ 完全弃用 repo.packagist 键名,无论你执行多少次 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,配置都会被静默忽略——命令不报错,但请求仍发往 packagist.org。
真正有效的全局配置必须分两步执行,缺一不可:
composer config -g repositories.packagist.org.type composercomposer config -g repositories.packagist.org.url https://mirrors.aliyun.com/composer/
漏掉 .type 行,或 .url 少了末尾 /,会导致请求路径拼错(如 /p2/xxx.json 变成 /composer/p2/xxx.json),最终返回 404 或 SSL 错误。
明明配了镜像,composer install 却还在连 packagist.org
这不是配置没读到,而是项目级 repositories 字段无条件覆盖全局设置。只要项目根目录的 composer.json 里存在 "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,看"packagist.org"对应的url是什么 - 用
grep -A 5 '"repositories"' composer.json检查是否硬编码了已下线源(如https://packagist.phpcomposer.com) - 临时清除:运行
composer config --unset repositories(注意不带-g),再试composer install
curl 测试返回 404 或超时,但 composer diagnose 显示 OK
composer diagnose 只校验 PHP 环境和缓存路径,完全不发网络请求,也不读你的镜像配置。它显示 OK ≠ 镜像可用。
真实验证方式只有一条:
-
curl -I https://mirrors.aliyun.com/composer/packages.json→ 必须返回HTTP/2 200或HTTP/1.1 200 OK - 返回
HTTP/2 404:URL 缺后缀(如华为云应为https://mirrors.huaweicloud.com/repository/php/,不是/composer/) - 超时或
Could not resolve host:DNS 或网络层问题,和 Composer 无关 - 返回 HTML 页面(非 JSON):某些镜像(如清华源)公网访问会触发人机验证,生产环境建议换阿里云或腾讯云
换镜像后仍报 checksum mismatch 或 Resolving dependencies 卡死
这两类问题和镜像配置是否生效无关:
-
checksum mismatch是因为composer.lock里存着旧包哈希,而镜像已同步新版——必须同时删掉vendor/和composer.lock,再重装 -
Resolving dependencies卡住是本地 CPU 在跑 SAT 求解,受版本约束宽松、require-dev工具链、config.platform.php错配影响;镜像只加速下载,不参与解析
最容易被忽略的是:改完配置不 composer clear-cache,旧元数据仍从 ~/.composer/cache/ 加载,所有操作都基于过期快照——清缓存不是可选动作,是必做步骤。










