答案:Composer显示0 updates却有新版本,是因元数据缓存(默认15分钟)未刷新,需≥2.5用--refresh,≤2.4手动删除repo/https---mirrors-aliyun-com-composer目录,并确认repos.packagist键名正确、项目级repositories未覆盖全局配置。

composer update 显示 0 updates 但明明有新版本
这不是网络或镜像问题,而是 Composer 正在复用过期的元数据缓存——它根本没去拉 packages.json,所以压根“看不见”刚发布的包。默认缓存有效期是 15 分钟,期间任何 composer update 都不会触发远程请求。
- ≥ 2.5 版本:直接运行
composer update --refresh,强制丢弃所有本地元数据缓存,从当前生效镜像重载 - ≤ 2.4 版本:手动删掉元数据缓存目录:
rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer(Linux/macOS)或用icacls清 Windows 对应路径 - 验证是否生效:加
--dry-run -v运行,看到日志里出现Downloading https://mirrors.aliyun.com/composer/packages.json才算真正走网络
删了 cache-dir 还是拉不到新版包
因为 composer clear-cache 只清 files/(ZIP 包)和部分 repo/(provider 列表),但它不碰最关键的元数据根目录,比如 repo/https---packagist.org/ 或镜像对应的 https---mirrors-aliyun-com-composer/。这个目录里存着 packages.json 和 provider-*.json,一旦滞后,update 就永远算不出新版本。
- 必须同步清理三处:
composer clear-cache+ 手动删repo/https---xxx/目录 + 删除composer.lock和vendor/composer/installed.json - 删
composer.lock后不能直接composer install,否则会按composer.json重新解析依赖树,可能引入意外升版;应跑composer update重建 lock - 注意路径拼写:阿里云镜像缓存目录名是
https---mirrors-aliyun-com-composer(三个短横,不是下划线或点)
项目级 repositories 覆盖全局镜像配置
你执行了 composer config -g repo.packagist https://mirrors.aliyun.com/composer/,但 composer update 日志里还是出现 packagist.org——大概率是项目 composer.json 里写了 "repositories" 字段。只要它存在,Composer 就彻底忽略全局设置,哪怕内容是空对象 {} 或 {"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 repo.packagist(不加-g),看输出是否仍是官方源 - 临时禁用:
composer config --unset repositories,再试update - 永久修复:打开项目
composer.json,删掉整个"repositories"段(保留缩进格式),避免未来被模板带入旧镜像 URL
镜像配置键名在 Composer ≥ 2.2 已变更
很多教程还教用 repo.packagist,但在 Composer 2.2+ 中,正确键名是 repos.packagist(复数形式)。写错后配置静默失效,composer config -g repo.packagist 会输出空或报错,但命令本身不提示,导致你以为配成功了。
- 查当前生效配置:
composer config -g repos.packagist,输出应为完整 JSON,如{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 设新镜像时务必用对键名:
composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}' - 已停用的镜像地址(如
packagist.phpcomposer.com)必须从全局和项目配置中彻底删除,否则后续install可能因 lock 文件里残留旧 URL 而反复失败
最常被忽略的是:元数据缓存路径和键名变更这两项,它们不会报错,只会让一切“看起来正常”,实则完全不走你配的镜像。排查时别只盯着 vendor 或 lock,先确认 packages.json 是不是真从阿里云拉下来的。

















