答案是必须分两步:先运行composer update --refresh(≥2.5)或手动删repo缓存以刷新元数据,再执行composer update vendor/package --no-cache强制走网络下载ZIP,因install只按lock复现,不查远程。

composer install 无法强制刷新缓存——它根本不查远程,只按 composer.lock 装包。 想“刷新”,本质是让 Composer 忘掉 lock 里的旧哈希、重新联网拉最新版本,这必须分两步:先更新元数据,再绕过 ZIP 缓存下载。
为什么 composer install --no-cache 不起作用
因为 composer install 的设计目标就是“精确复现 lock 文件”,它不关心远程有没有新版本。加 --no-cache 只禁用 packages.json 和 ZIP 包的本地缓存读取,但不会触发元数据重拉,也不会忽略 composer.lock 中固定的 dist.shasum 或 commit。
- 现象:终端输出
Installing vendor/package (1.2.3),但没出现Downloading https://,说明它直接从~/.composer/cache/files/或 vendor 里硬解压了旧 ZIP - 根本原因:lock 文件锁死了 dist URL 和校验和,Composer 连远程地址都懒得拼,更别说发 HTTP 请求
- 误判点:删掉
vendor/后跑composer install --no-cache,结果还是装旧版——因为 lock 没变,缓存 ZIP 也还在
真正能强制“刷新”的两步操作
必须同时打破元数据锁定 + 绕过 ZIP 缓存,否则任何参数都白搭:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 第一步:运行
composer update --refresh(Composer ≥ 2.5)或手动删除~/.composer/cache/repo/https---mirrors-aliyun-com-composer/目录(≤ 2.4)。这确保packages.json是镜像站当前最新快照 - 第二步:运行
composer update vendor/package --no-cache。注意不是install,而是update;--no-cache此时才生效,强制走 HTTPS 下载 dist ZIP,跳过~/.composer/cache/files/ - 验证成功标志:终端日志中必须出现类似
Downloading https://mirrors.aliyun.com/composer/d/vendor/package.zip,且时间戳是当前秒级
只想重装某个包,不碰其他依赖
默认 composer update vendor/package 会连带升级其子依赖(如 psr/log),容易引发隐式变更。安全做法是:
- 显式写死版本:在
composer.json中把该包设为固定版本,例如"monolog/monolog": "3.6.0" - 执行
composer update monolog/monolog --no-update-with-dependencies(≥ 2.5) - 加
--no-cache确保 ZIP 重下,避免因本地 ZIP 损坏导致安装失败
关键记住:Composer 没有“刷新 install”这回事。install 是确定性操作,它的“刷新”只能靠先破坏 lock 的约束前提(通过 update 生成新 lock),再让网络请求真正发出。漏掉元数据刷新或 ZIP 绕过任一环,就还在用旧快照。

















