最可靠方式是命令前直接设置 composer_cache_dir 环境变量,如 composer_cache_dir=/tmp/composer-cache composer install,优先级最高且 composer 2.2+ 完全支持;旧版本会忽略并退回默认路径。

用 COMPOSER_CACHE_DIR 环境变量临时指定最可靠
直接在命令前加环境变量,不改任何配置,适合调试、CI 构建或单次覆盖:COMPOSER_CACHE_DIR=/tmp/composer-cache composer install。它优先级最高,Composer 2.2+ 完全支持,旧版本(如 2.1.x)会忽略此变量、退回默认路径。
常见错误现象:
-
COMPOSER_CACHE_DIR="/path/with space"—— 路径含空格但没用引号包裹(Linux/macOS 下 shell 会截断),应写成COMPOSER_CACHE_DIR="/path/with space" composer install - Windows CMD 中用
set COMPOSER_CACHE_DIR=C:\cache && composer install,但&&后的环境变量不继承,得用cmd /c "set COMPOSER_CACHE_DIR=C:\cache && composer install"或改用 PowerShell - 路径不存在或无写权限时,Composer 静默 fallback 到默认缓存目录,不会报错,只会反复下载
composer config --global cache-dir 设全局路径但容易被覆盖
这条命令写入 ~/.composer/config.json(Linux/macOS)或 %APPDATA%\Composer\config.json(Windows),对所有项目生效。但它优先级低于 COMPOSER_CACHE_DIR,如果环境变量已设,这条命令就无效。
使用场景:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 长期固定一台开发机的缓存位置,比如 SSD 分区:
composer config --global cache-dir /ssd/composer-cache - 执行后必须确保目标路径存在且当前用户有读写执行权限(Linux/macOS 下
execute权限用于进入目录) - 若之前设过值又想切回环境变量方式,先运行
composer config --global --unset cache-dir清掉冲突项
怎么验证缓存真的写到新目录了
composer config --global cache-dir 只显示配置值,不能代表真实路径。真正起作用的是运行时解析结果,必须用以下任一方式确认:
- 运行
composer global show -v,找Cache directory:行输出 - 运行
composer diag,看Cache directory:行;如果显示Cache is not working due to permissions,说明路径不可写 - 清空旧缓存(
composer clear-cache),执行composer require monolog/monolog --no-install,立刻检查目标目录下是否生成了repo/和archived/子目录
路径权限和磁盘类型是静默失败主因
缓存目录写入失败时 Composer 几乎不报错,只会退化为无缓存模式——每次 install 都重新下载,你以为是网络慢,其实是缓存根本没用上。
关键检查点:
- Linux/macOS:用
ls -ld /your/cache/path确认属主和权限,至少需要drwxr-xr-x(即用户有rwx) - Docker 场景:必须同时挂载卷(
-v $(pwd)/cache:/cache)并注入环境变量(-e COMPOSER_CACHE_DIR=/cache),缺一不可 - NFS 或某些 CI volume(如 GitHub Actions 的
actions/cache)可能禁止创建子目录,导致repo/无法初始化 - 曾用
sudo composer写过缓存,之后普通用户无法写入,需手动chown -R $USER:$USER /your/cache/path
改完路径后,旧缓存不会自动迁移,也不建议混用——直接 composer clear-cache 更干净。真正要盯住的,永远是 composer global show -v 输出的那行 Cache directory,以及它底下有没有新生成的 archived/ 文件夹。










