永久修改Composer缓存路径应执行composer config --global cache-dir 绝对路径,路径须手动创建并赋予权限,生效以composer diag输出的Cache directory为准,环境变量COMPOSER_CACHE_DIR优先级最高。

直接改 cache-dir 就行,但必须用绝对路径、手动建目录、再用 composer diag 验证——否则 Composer 会静默退回到默认路径,你根本察觉不到失败。
怎么永久改缓存路径?用 composer config --global cache-dir
这条命令是唯一推荐的修改方式,它自动写入全局配置、校验格式、刷新内部状态。
- 必须带
--global(或-g),否则会误写进当前项目的composer.json - 值必须是绝对路径:Linux/macOS/WSL 写
/data/composer-cache,Windows 写D:\composer-cache;~、$HOME、./cache全部无效 - 路径必须已存在,且当前用户有读写权限;Composer 不会自动创建目录,也不会报错提示
- 改完不迁移旧缓存,要手动同步:
rsync -a ~/.composer/cache/ /data/composer-cache/或直接清空重来
为什么 composer config --global cache-dir 显示成功了,但缓存还是写在默认位置?
因为 composer config 只显示配置项内容,不代表运行时真实生效路径。真正决定行为的是 composer diag 输出的 Cache directory 行。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先运行
composer diag,看Cache directory:后面是不是你设的路径 - 如果不是,检查是否设置了环境变量
COMPOSER_CACHE_DIR—— 它优先级最高,会直接覆盖所有配置 - 再确认目标目录是否存在、权限是否正确:
ls -ld /data/composer-cache(Linux/macOS)或icacls D:\composer-cache(Windows) - 首次
composer install后,检查$(composer config --global cache-dir)/files下是否有哈希命名的.zip文件
临时换缓存路径?只认 COMPOSER_CACHE_DIR 环境变量
composer install --cache-dir 是非法命令,composer config cache-dir 也不影响安装行为。唯一可靠方式就是设环境变量。
- Linux/macOS/Bash:
COMPOSER_CACHE_DIR="/tmp/composer-cache" composer install - Windows PowerShell:
$env:COMPOSER_CACHE_DIR="D:\ci-cache"; composer install - 该变量进程级生效,退出终端即失效;它不解析
~或$HOME,必须是绝对路径 - 设错(如目录不存在、无写权限)时,Composer 不报错,只会 fallback 到默认路径——所以每次设完都得
composer diag验证
特别注意:cache-files-dir 和离线场景
如果你的目标是打包带走下载好的 zip 包(比如离线部署),只配 cache-dir 不够,必须显式设置 cache-files-dir 指向 files 子目录。
- 先清旧配置:
composer config --global --unset cache-dir - 再设专用路径:
composer config --global cache-files-dir /mnt/offline-cache/files - 执行
composer install --prefer-dist --no-autoloader --no-scripts触发下载 - 验证:
ls /mnt/offline-cache/files/*/*.zip应该有实际文件;否则说明配置未生效或路径权限不对
最常被忽略的一点:缓存路径只是“容器”,真正决定是否命中的,是 PHP 版本、composer.lock 哈希、镜像源 URL 三者是否完全一致。路径对了,但其中任一条件变了,缓存就成摆设。

















