composer install 本身不更新缓存也不拉新版本,它仅依据 composer.lock 精确还原依赖;要装最新版需先执行 composer update(配合 --refresh 或手动清理 repo 缓存)生成新 lock,再运行 install。

composer install 本身无法强制更新缓存——它只按 composer.lock 安装,完全不查远程元数据,也不刷新任何缓存。想“强制更新缓存”,实际要解决的是:你改了 composer.json 或镜像已上新版本,但 install 仍装旧包。这背后是缓存复用和 lock 文件双重锁定,必须绕过。
为什么 composer install 不会碰缓存,也不拉新版本
install 的设计目标就是确定性还原:它只读 composer.lock 里的 exact commit hash 或 dist shasum,连 packages.json 都不加载,更不会发起 HTTP 请求。所谓“更新缓存”是误判,真正卡住的是两个点:
-
composer.lock锁死了版本,哪怕镜像站已有 v3.6.0,install 也只会下 v3.5.0 对应的 ZIP - 即使你删了 lock、改了 composer.json,后续 run
composer install仍会报错Lock file does not exist. Run composer update to create it.—— install 不负责生成 lock
想让 install 装上镜像里的最新版,必须先生成新 lock
本质是让 Composer 重新解析依赖约束,拿到最新元数据后写入 lock。关键不是“刷新缓存”,而是确保 update 阶段能看见新版本:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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/下对应镜像的packages.json和provider-*.json,再从https://mirrors.aliyun.com/composer/重拉索引 - 再运行
composer update(不带参数):基于新元数据求解依赖,生成含最新版本的composer.lock - 最后才是
composer install:此时 lock 里已是新版本,install 才会下载对应 ZIP
老版本 Composer(≤ 2.4)手动清元数据缓存
--refresh 不可用时,必须精准删除元数据目录,否则 update 仍读旧快照:
- 查缓存根路径:
composer config --global cache-dir(Linux/macOS 通常是~/.composer/cache) - 进
repo/子目录,找与镜像 URL 匹配的文件夹,例如阿里云镜像对应https---mirrors-aliyun-com-composer(注意协议、域名、符号全部转义) - 执行
rm -rf ~/.composer/cache/repo/https---mirrors-aliyun-com-composer(Windows 用rd /s /q "%APPDATA%\Composer\Cache\repo\https---mirrors-aliyun-com-composer") - 之后再跑
composer update,它才会真正发请求
别被 --no-cache 误导:它对 install 无效
composer install --no-cache 只跳过 ZIP 缓存查找,但 install 根本不查元数据,所以加了也没用。真正要禁用缓存走网络,得在 update 阶段用:
-
composer update --no-cache:跳过 repo 和 files 缓存,强制所有 HTTP 请求 - 或临时禁用整个缓存:
COMPOSER_CACHE_DIR=/dev/null composer update - 但注意:这些操作会让 update 变慢,且不会改变 install 行为 —— install 始终只认 lock
最易忽略的一点:项目根目录的 composer.json 里如果写了 "repositories" 字段,全局镜像配置就彻底失效。composer update --refresh 会按项目里写的 URL 去拉元数据,而那个 URL 很可能已 404 或不是中文镜像。务必先确认 composer config --list | grep repositories 输出为空。

















