composer缓存路径默认在linux/macos为~/.composer/cache、windows为%appdata%\composer\cache,但实际生效路径需运行composer diag查看“cache directory”行,因composer_home或composer_cache_dir环境变量可能覆盖默认值。

Composer缓存路径默认在哪?先看实际生效位置
别猜,直接运行 composer diag,看 “Cache directory” 那一行输出的路径——这才是 Composer 当前真正用的缓存位置。它可能和你印象中的 ~/.composer/cache 或 %APPDATA%\Composer\Cache 不一致,因为 COMPOSER_HOME、COMPOSER_CACHE_DIR 或全局配置都可能已覆盖默认逻辑。
常见误区是认为 Linux/macOS 一定走 ~/.composer/cache,Windows 一定走 %APPDATA%\Composer\Cache。实际上,只要设置了 COMPOSER_HOME 环境变量,缓存就会落在 $COMPOSER_HOME/cache(Linux/macOS)或 %COMPOSER_HOME%\cache(Windows),而 COMPOSER_HOME 本身可能指向任意目录。
怎么永久改缓存路径?用 config --global 最稳妥
执行 composer config --global cache-dir /path/to/cache 即可写入全局配置。这条命令会更新 composer config --global --list 显示的那个 config.json 文件(不是你手动找的 ~/.composer/config.json),且无需重启终端。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 路径必须是绝对路径,不能含
~(Shell 不解析,Composer 也不认) - 目录必须已存在,且当前用户有读写权限,否则后续
composer install会静默 fallback 到默认路径 - 改完不会自动迁移旧缓存,要手动
rsync -a ~/.composer/cache/ /path/to/cache/或直接清空重来
临时覆盖缓存路径?只认 COMPOSER_CACHE_DIR 环境变量
composer install --cache-dir 是无效命令,会报 Unknown option cache-dir;composer config cache-dir 也不影响安装行为——唯一可靠方式是设环境变量 COMPOSER_CACHE_DIR。
- Linux/macOS:
COMPOSER_CACHE_DIR="/tmp/composer-cache" composer install - Windows PowerShell:
$env:COMPOSER_CACHE_DIR="/tmp/composer-cache"; composer install - 该变量优先级最高,比
composer config --global cache-dir还高,进程退出即失效 - 设错路径(如目录不存在、无写权限)时,Composer 不报错,但会退回到默认缓存位置——务必用
composer diag验证是否真生效
CI/容器中缓存失效的典型原因
CI 脚本里漏设 COMPOSER_CACHE_DIR,或设了但没 mkdir -p 目录,是最常见静默失败点。尤其在 Docker 中,/root/.composer/cache 往往不可写或被 layer 清理,导致每次构建都重新下载。
- 推荐在 CI 脚本开头固定写三行:
export COMPOSER_CACHE_DIR="/composer-cache"、mkdir -p "$COMPOSER_CACHE_DIR"、chown -R $(whoami) "$COMPOSER_CACHE_DIR" - 不要依赖
composer clear-cache来“省事”,它不清理sys_get_temp_dir()下的临时 ZIP 文件,那些也占空间 - 如果用了自定义
COMPOSER_HOME,记得确认它的父目录所在磁盘有足够空间,否则缓存和全局 vendor 全部卡住
真正容易被忽略的是:缓存路径合法性检查完全靠 Composer 自身静默 fallback,不报错、不警告、不提示。你看到 composer diag 输出了新路径,不代表它真在往那里写——得进目录看有没有 repo/ 和 files/ 子目录生成,或者用 strace -e trace=openat composer install 2>&1 | grep cache(Linux)验证实际打开路径。










