composer update --refresh能解决“新版本看不到”问题,是因为它强制丢弃本地缓存的packages.json和provider-*.json(默认15分钟不过期),从当前生效镜像源重新下载最新元数据,不触碰ZIP包缓存;执行前须确认:全局镜像配置正确、缓存路径存在、项目级repositories未覆盖全局设置。

composer update --refresh 为什么能解决“新版本看不到”
因为 Composer 默认复用本地缓存的 packages.json 和 provider-*.json,15 分钟内不过期。哪怕镜像站已同步 monolog/monolog 的 3.6.0,你本地缓存里还是旧索引,composer update 就压根不查远程——它直接按缓存里的“可用版本列表”算依赖,结果就是 “Nothing to install or update”。composer update --refresh(Composer ≥ 2.5)只丢弃这些元数据文件,强制从当前配置的镜像源重拉最新索引,不碰 ZIP 缓存,也不重装包。
执行前必须确认的三件事
否则 --refresh 会去错地方拉、或根本不起效:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer config -g repo.packagist输出必须是你期望的镜像地址(如https://mirrors.aliyun.com/composer/),不是已停服的https://packagist.phpcomposer.com -
composer config --global cache-dir查出缓存根目录后,进repo/子目录确认对应镜像路径存在(如https---mirrors.aliyun.com-composer),路径名是 URL 转义结果,必须严格匹配 - 运行
composer config --list | grep repositories,确保项目级composer.json没写"repositories"字段——只要写了,全局镜像配置就彻底失效,--refresh会按项目里写的 URL 去拉,而那个 URL 很可能已 404
老版本 Composer(
composer update --refresh 不可用时,手动删元数据缓存是唯一可靠方式:
- Linux/macOS:
rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com-composer - Windows:
rd /s /q "%COMPOSER_HOME%\cache\repo\https---mirrors.aliyun.com-composer" - 删完必须立刻触发一次
composer update vendor/package-name或composer show -d,否则缓存不会重建 - 别用
composer clear-cache替代——它清的是~/.composer/cache/files/下的 ZIP 包,对决定“有没有这个包”的元数据完全无效
验证是否真的刷新成功
执行 composer update --refresh 后不能只看命令是否跑完,得验证新版本是否被识别:
- 立刻试装:
composer update monolog/monolog,观察输出里是否出现 3.6.0(或你要的版本) - 用
composer show monolog/monolog看可用版本列表,确认新版本在列 - 临时绕过镜像验证:
composer show -d monolog/monolog,检查 “Repo packagist.org:” 行输出的 URL 是否为你刚配的镜像地址,且状态为 “OK” - 如果仍失败,curl 直接测镜像元数据:
curl -I https://mirrors.aliyun.com/composer/packages.json,HTTP 200 才算真正通,404 或超时说明镜像本身有问题
packages.json。这一步漏了,其他全白做。

















