composer update 显示“nothing to install or update”是因本地缓存 packages.json 15 分钟内不更新,导致无法识别镜像站已同步的新版本;需用 composer update --refresh(≥2.5)或手动清理 ~/.composer/cache/repo/ 下对应元数据缓存方可解决。

卡在 metadata 索引解析阶段(比如日志停在 Reading /home/user/.composer/cache/repo/https---mirrors-aliyun-com-composer/packages.json)不是网络慢,也不是 PHP 内存不够——它根本没发请求,纯本地读缓存,且读的是 15 分钟前的旧快照。
为什么 composer update 显示 “Nothing to install or update” 却明明有新版本
Composer 默认复用本地 packages.json 缓存,15 分钟内绝不重拉。哪怕镜像站已同步 monolog/monolog v3.6.0,你本地仍按 v3.5.0 的索引算,直接跳过远程校验。
- 现象:Packagist 页面和镜像根目录都显示新版,但
composer update monolog/monolog仍返回 “Nothing to install or update” - 验证方式:
curl -I https://mirrors.aliyun.com/composer/packages.json返回 HTTP 200,且Last-Modified时间比你上次更新早,说明本地缓存没刷新 -
composer clear-cache不解决此问题——它清的是 ZIP 包缓存,packages.json还在~/.composer/cache/repo/下原封不动
composer update --refresh 到底做了什么
这是 Composer ≥ 2.5 专为元数据延迟设计的轻量操作:只删 repo/ 子目录下的 packages.json 和所有 provider-*.json,然后从当前生效镜像源重新下载最新索引,不碰 ZIP、不重装包、不删 vendor/ 或 composer.lock。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行后立刻跑
composer update vendor/package就能识别镜像站刚同步的新版本 - 前提:运行
composer config -g repo.packagist输出必须是https://开头的有效地址(如https://mirrors.aliyun.com/composer/),HTTP 地址会被静默拦截 - Composer ≤ 2.4 不支持该参数,强行运行报错:
Unrecognized option: --refresh
手动清理 metadata 缓存的最小安全操作集
不管版本新旧,以下四步组合最可靠:
- 运行
composer clear-cache清基础缓存 - 删元数据主目录:
rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer(Linux/macOS)或对应 Windows 路径(注意转义) - 删项目级快照:
rm -f vendor/composer/installed.json;如需彻底重解依赖,再删composer.lock(删前确认) - 验证是否生效:
composer update --dry-run -v,看到Downloading https://...行才表示元数据正在重拉;若仍只显示Reading from cache,说明某处缓存路径残留或镜像配置未生效
真正容易被忽略的是:删完缓存后,第一次 composer update 必须成功拿到 packages.json,否则后续所有操作都在原地打转。而这个文件能否拉到,取决于镜像 URL 是否正确、是否被项目级 "repositories" 字段屏蔽、以及中间链路是否静默拦截 HTTPS 请求。










