composer update --refresh 是刷新元数据的唯一正解,强制丢弃 cache/repo/ 下的 packages.json 并从镜像源重载;随后执行 composer update vendor/package 即可识别镜像站新版本。

想让 Composer 强制更新某个包并绕过镜像源的本地缓存(比如阿里云、腾讯云镜像),关键不是换源或加参数硬冲,而是切断元数据缓存复用 + 强制跳过 ZIP 缓存解压这两步。只清缓存或只删 vendor 都不行。
composer update --refresh 是刷新元数据的唯一正解
镜像同步延迟的本质是 Composer 复用本地缓存的 packages.json(默认 15 分钟不过期),哪怕镜像站已上线新版本,它也看不到。此时 composer update vendor/package 会直接返回 “Nothing to install or update”。
-
composer update --refresh(Composer ≥ 2.5)强制丢弃所有cache/repo/下的元数据文件,并从当前配置的镜像源重新下载最新packages.json - 它不重下任何 ZIP 包,也不清缓存里的 dist 归档,所以快且精准
- 执行后立刻跟
composer update vendor/package,就能识别到镜像站刚同步的新版本(如monolog/monolog3.6.0) - 老版本 Composer(rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer(路径按
composer config -g repo.packagist输出的实际 URL 调整)
--no-cache 必须配合 clear-cache 才能真正重下 ZIP
即使元数据刷新了,Composer 默认仍会从 ~/.composer/cache/files/ 解压旧 ZIP —— 这就是为什么你看到 “Downloading” 没出现,却提示 “Writing lock file”。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先运行
composer clear-cache:删掉所有缓存的 ZIP 和元数据 - 再立即执行
composer update vendor/package --no-cache:跳过缓存查找逻辑,强制走网络请求下载 - 如果只跑
--no-cache不清缓存,它仍可能命中缓存 ZIP 的哈希并直接解压(尤其当包没变但你想验证真实网络行为时) - 验证是否真重下:终端输出必须含
Downloading https://,且时间戳是当前秒级;否则仍是缓存兜底
别指望 --ignore-platform-reqs 或 --force-reinstall 绕过镜像缓存
这两个参数和“镜像缓存”完全无关:
-
--ignore-platform-reqs只跳过 PHP 版本、扩展检查,不影响任何远程请求或缓存行为 -
--force-reinstall(Composer 2.2+)只是自动删vendor/vendor/package再重装,但仍会复用缓存 ZIP —— 它解决的是文件损坏,不是缓存陈旧 - 试图用
COMPOSER_CACHE_DIR=/dev/null composer update在 Linux/macOS 上可行,但在 Windows 上需改用set COMPOSER_CACHE_DIR=NUL,且容易被其他环境变量覆盖,稳定性不如clear-cache + --no-cache
修改 composer.json 版本约束才是跨版本更新的前提
即使元数据和 ZIP 都刷新了,composer update vendor/package 也不会升到 composer.json 约束外的版本。例如:
- 当前是
"monolog/monolog": "^2.9",镜像已有 3.6.0,但 update 仍卡在 2.x - 必须先改成
"monolog/monolog": "^3.0",再跑composer update --refresh && composer update monolog/monolog --no-cache - 如果只想试装 3.6.0 而不改约束,可用
composer require monolog/monolog:3.6.0(会自动更新 lock 并重装) - 注意:改完
composer.json后,composer update默认仍读 lock,要同步 lock 再执行composer update --lock或直接删composer.lock
最容易被忽略的一点是:镜像源的元数据缓存和 ZIP 缓存是两套独立机制,必须分别击破。只刷新一个,另一个就会悄悄接管,让你误以为“已经强制了”。










