Composer 2.2+ 已废弃repo.packagist键名,配置被静默忽略;必须用repositories.packagist.org.type和.url双命令设置,且URL须以/结尾,同时项目级repositories字段会无条件覆盖全局配置。

composer config -g repo.packagist 有输出但不生效?键名已废弃
Composer 2.2+ 完全弃用了 repo.packagist 这个键名,无论你执行多少次 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,它都不会起作用——命令不报错,但配置被静默忽略。
真正有效的全局配置方式是两条命令必须同时执行:
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
这不是 Composer 没读到配置,而是项目级 repositories 字段直接屏蔽了全局设置。只要项目根目录的 composer.json 里存在 "repositories" 字段(哪怕值是空数组、{},甚至 "packagist.org": false),全局镜像就彻底失效。
排查方法很简单:
- 在项目目录下运行
composer config repositories,看输出里"packagist.org"对应的url是什么 - 用
grep -A5 '"repositories"' composer.json检查是否硬编码了旧源(例如已下线的https://packagist.phpcomposer.com) - 临时清除:运行
composer config --unset repositories(注意没-g),再试composer install
CI/CD 环境(如 GitHub Actions)默认不继承本地全局配置,必须在 workflow 中显式写入上述两条 config 命令。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
curl 测试返回 404 或超时,但 composer diagnose 显示 OK
composer diagnose 只校验 PHP 环境和缓存路径,完全不发网络请求,也不读你的镜像配置。它显示 OK ≠ 镜像可用。
真实验证方式只有一条:用 curl 直打镜像地址:
-
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):某些镜像(如清华源)公网访问会触发人机验证,生产环境建议换阿里云或腾讯云
别信日志里“Loading composer repositories”这种模糊提示,加 -vvv 才能看到真实请求地址:composer install -vvv | grep "Downloading.*packages.json"。
删了 vendor 和缓存,还是 hash verification failed
这个错误根本不在缓存或 vendor/ 目录里,而是在 composer.lock 文件的 dist.sha256 字段。镜像同步有 5–30 分钟延迟,新包发布后,composer.lock 里存的哈希值仍指向旧版 ZIP 包,自然校验失败。
清缓存、删 vendor 都无效,唯一解法是:
- Windows:执行
rd /s /q vendor & del composer.lock - Linux/macOS:执行
rm -rf vendor && rm composer.lock - 再跑
composer install—— 此时所有dist.sha256都来自同一时刻的镜像元数据
如果着急,别换镜像碰运气;先切回官方源重装生成新 lock,等 30 分钟再切回国内镜像。CI 环境中反复失败,大概率是构建缓存污染,而非配置问题。

















