Cache directory 由 composer diag 输出决定,优先级为 COMPOSER_CACHE_DIR > 全局配置 > 默认路径 ~/.composer/cache;项目级 cache-dir 无效,环境变量需绝对路径且目录须存在并有读写权限。

composer diag 输出的 Cache directory 才是真实路径
运行 composer diag,看输出中 Cache directory: 这一行——它才是 update 命令实际读写缓存的位置。别信 composer config --global cache-dir 的输出,它只显示配置项,不反映最终生效值。
常见错误:改了 ~/.composer/config.json 里的 "cache-dir" 字段,但 JSON 格式有误(比如多一个逗号、引号没闭合),Composer 就静默跳过整个配置,继续用默认路径 ~/.composer/cache。此时 composer config --global cache-dir 还会照常输出你写的值,造成“配置已生效”的假象。
COMPOSER_CACHE_DIR 环境变量优先级最高
如果设置了 COMPOSER_CACHE_DIR,哪怕只在当前终端里执行过 export COMPOSER_CACHE_DIR="/tmp/composer-cache",composer diag 显示的 Cache directory 就会是这个路径,且 update 一定走这里。
- 必须是绝对路径:
/tmp/composer-cache✅,~/composer-cache❌(波浪号不解析) - 目录必须提前存在:
mkdir -p /tmp/composer-cache - 当前用户必须有读写权限,否则 Composer 静默 fallback 到默认路径,不报错
composer.json 里的 cache-dir 完全无效
项目级 composer.json 中写 "config": {"cache-dir": "/xxx"} 对 update 缓存路径零影响。这个字段只被 composer config 命令读取,install/update 等核心命令根本不看它。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
真正起作用的路径顺序只有三档:COMPOSER_CACHE_DIR > 全局 cache-dir 配置 > 默认路径 ~/.composer/cache。项目里硬加 cache-dir 反而容易误导协作成员,以为路径可跨项目复用。
验证缓存是否真被命中
composer update -vvv 时注意看日志里有没有 Downloading ... from cache 或 Using version x.y.z from cache 这类提示。没有的话,说明要么路径没生效,要么对应包版本根本没缓存过。
更直接的办法:清空当前缓存目录后跑一次 update,再立刻 ls -t ~/.composer/cache/files/vendor/name/ | head -n3,看最新生成的 hash 目录是否和刚装的版本匹配。缓存机制只存 dist zip 和 source commit hash,不存语义化版本号,所以得靠目录名反推。

















