唯一可靠方式是环境变量COMPOSER_CACHE_DIR;--cache-dir命令行选项根本不存在,运行时直接报Unknown option cache-dir,所有依赖该参数的尝试均失败。

Composer 缓存路径不能靠命令行参数临时指定,唯一可靠方式是环境变量 COMPOSER_CACHE_DIR;永久修改则用 composer config --global cache-dir,但必须确保路径存在且有读写权限。
为什么 composer install --cache-dir 一定报错?
这个选项根本不存在。Composer 命令行解析器不识别 --cache-dir,运行时直接抛出 Unknown option cache-dir。所有试图用命令行参数“临时改缓存路径”的操作都会失败。
官方源码和文档中从未支持该 flag;composer config cache-dir 只读取配置值,不生效于 install/update;在 composer.json 里写 "config": {"cache-dir": "..."} 也无效——该字段只被 composer config 命令读取,install 过程完全忽略它。
怎么正确设置全局缓存路径?
用 composer config --global cache-dir 是最稳的永久方案,它会自动写入 ~/.composer/config.json(Windows 是 %APPDATA%\Composer\config.json)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须用绝对路径,比如
composer config --global cache-dir /data/composer-cache - 路径必须已存在,且当前用户有读写权限,否则后续
composer install会报file_put_contents(...): failed to open stream - 不要用波浪号
~,Composer 不解析 shell 符号 - 改完后旧缓存不会自动迁移,需手动
cp -r ~/.composer/cache/* /data/composer-cache/或直接清空重来
如何在 CI/Docker 中临时指定缓存目录?
唯一推荐方式是设环境变量 COMPOSER_CACHE_DIR,它优先级最高、不写配置、进程退出即失效,适合单次构建或容器场景。
常见踩坑点:
-
export COMPOSER_CACHE_DIR="/tmp/composer-cache"后没mkdir -p /tmp/composer-cache→ Composer 静默 fallback 到默认路径,composer diag却仍显示你设的路径 - 权限不对(如 Docker 容器以 root 运行但挂载目录属普通用户)→ 写失败,同样静默回退
- CI 脚本漏设该变量,缓存可能落到
/root/.composer/cache,而该路径在容器里常不可写或被清理,导致静默失败 - 验证是否真生效:跑
composer diag,看Cache directory:行输出,再检查磁盘上对应路径是否有新文件写入
缓存路径改了,但 composer diag 显示的和实际不符?
别信 composer config --global cache-dir 的输出,它只读配置项,不反映真实行为。真正决定路径的是:COMPOSER_CACHE_DIR 环境变量(最高优先级)→ 全局 config → 默认路径。
最容易被忽略的是:路径合法性与权限检查必须在运行前完成。Composer 不校验路径是否存在、是否可写,只在第一次写缓存时尝试打开文件 —— 失败就默默切到默认位置,连 warning 都不打。只有观察磁盘写入行为或加 -vvv 看日志里的实际缓存路径,才能确认是否真的生效。

















