真正可信的缓存路径是composer diag显示的“cache directory:”行,而非composer config cache-dir输出;环境变量composer_cache_dir优先级最高,设后需验证是否生效。

composer config cache-dir 显示的路径不一定真实生效
它只反映当前配置项的值,不等于 Composer 实际读写的缓存目录。比如你设了 COMPOSER_CACHE_DIR 环境变量,composer config cache-dir 仍可能输出旧路径,但实际缓存已写到新位置。
真正可信的方式是运行 composer diag,找 Cache directory: 那一行——这才是它此刻正在用的路径。如果显示 Cache is not working due to permissions,说明目录存在但不可写,Composer 已静默 fallback 到默认路径(Linux/macOS 是 ~/.composer/cache,Windows 是 %APPDATA%\Composer\Cache)。
- 删掉旧缓存后执行一次
composer require monolog/monolog --no-install - 立刻检查你设的目标路径下是否生成了
repo/和files/子目录 - 没生成?大概率是路径不存在、权限不足,或被环境变量覆盖却没生效
改缓存路径最稳的是设 COMPOSER_CACHE_DIR 环境变量
这个变量优先级最高,能绕过所有配置文件,适合 Docker、CI/CD、多用户机器等场景。它不依赖 ~/.composer/config.json 是否可读/挂载,只要进程启动时环境里有,就一定生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:在
~/.zshrc或~/.bashrc末尾加export COMPOSER_CACHE_DIR="/mnt/ssd/composer-cache",然后运行source ~/.zshrc - Windows PowerShell:
[Environment]::SetEnvironmentVariable("COMPOSER_CACHE_DIR", "D:\composer-cache", "User") - Docker:必须在
Dockerfile中写ENV COMPOSER_CACHE_DIR=/cache,并挂载卷-v $(pwd)/cache:/cache - 路径中不能含空格或中文;含空格请用符号链接代替,否则 Composer 会静默退回到默认路径
composer config --global cache-dir 不推荐作为首选方式
它把路径写进 ~/.composer/config.json,看似简单,但隐患明显:配置文件可能被挂载覆盖(如 Docker 容器)、权限异常、或被更高优先级的环境变量覆盖却不报错。
- 必须用绝对路径,
~和相对路径都不解析,例如/data/composer-cache合法,~/cache无效 - 设置后旧缓存不会自动迁移,要手动复制或删除;验证是否真生效,得看
composer clear-cache输出的清理路径 - Windows 下路径带空格必须用英文双引号包裹,但更稳妥的做法是避开空格,比如选
D:\cpcache而非D:\composer cache - 执行
composer config --global cache-dir只是查配置值,不是查运行时路径,别把它当最终依据
注意:缓存目录 ≠ vendor 目录,也 ≠ PHP 临时解压目录
很多人卡在 Extracting archive 卡住或报 Permission denied,其实和缓存路径完全无关——那是 PHP 的 sys_get_temp_dir() 不可写或空间不足导致的。
- 缓存目录(
cache-dir)只存 ZIP 包、元数据 JSON、hash 命名的解压快照,不影响安装过程本身 - vendor 目录由
install/update写入,与缓存分离;想改 vendor 位置,请用COMPOSER_VENDOR_DIR环境变量,不是cache-dir - 解压临时路径由 PHP 控制,可通过
export TMPDIR="/tmp/composer-tmp"(Linux/macOS)或set TMP=C:\tmp(Windows CMD)修改 - 验证 PHP 临时路径是否生效:
php -r "echo sys_get_temp_dir();",输出必须是你设的路径










