composer全局缓存路径可通过composer config -g cache-dir修改,需确保路径存在且有读写权限;环境变量composer_cache_dir可临时覆盖,优先级更高;windows需检查权限与组策略,避免设于网络或同步盘。

composer config -g cache-dir 修改全局缓存路径
Composer 默认把包缓存存在 ~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows),但磁盘空间小、权限受限或想统一管理时,就得换地方。最直接的方式是用 config 命令改全局配置。
- 执行
composer config -g cache-dir /path/to/your/cache(Linux/macOS)或composer config -g cache-dir D:\composer-cache(Windows) - 路径必须存在且当前用户有读写权限,否则后续
install或update会静默失败或回退到默认路径 - 该命令会写入
~/.composer/config.json(或 Windows 对应位置),你可手动检查确认"cache-dir"字段是否已更新 - 注意:改完后已有缓存不会自动迁移,旧目录得自己清理,新操作才走新路径
临时用 COMPOSER_CACHE_DIR 环境变量覆盖
不想动全局配置,或者 CI/CD 流水线里需要每次指定不同缓存位置,就用环境变量。它优先级高于 config.json 中的设置,且只对当前命令生效。
- Linux/macOS:
COMPOSER_CACHE_DIR=/tmp/composer-cache composer install - Windows cmd:
set COMPOSER_CACHE_DIR=D:\temp\cache && composer install - PowerShell:
$env:COMPOSER_CACHE_DIR="D:\temp\cache"; composer install - 这个方式不持久,适合脚本或容器场景;但要注意路径中不能有空格或特殊字符,否则某些 shell 下会解析失败
Windows 下修改 registry 或权限导致 cache-dir 不生效
在 Windows 上,即使 config -g 显示成功,composer install 仍可能往默认路径写缓存——常见原因是 Composer 启动时读不到用户配置,或权限被组策略锁死。
- 先运行
composer config -g --list,确认cache-dir确实出现在输出里 - 检查
%APPDATA%\Composer\目录权限:右键 → 属性 → 安全 → 当前用户需有“完全控制” - 如果公司电脑禁用了用户配置文件写入,
COMPOSER_HOME环境变量可能更可靠:set COMPOSER_HOME=C:\my-composer && set COMPOSER_CACHE_DIR=%COMPOSER_HOME%\cache - 杀毒软件有时会拦截缓存目录创建,尤其是往
C:\Program Files或根目录下设缓存时,建议避开系统敏感路径
自定义路径后 vendor 更新变慢或报错
换了缓存目录不等于性能自动提升,反而可能因路径跨盘、挂载方式或文件系统差异引发问题。
- 避免把缓存设在 NFS、SMB 或 OneDrive 同步目录里——Composer 频繁读写小文件,网络延迟和锁机制会导致超时或
file_put_contents(): Failed to open stream - SSD 和 HDD 混用时,缓存放 SSD、
vendor放 HDD 是合理组合;但反着来(缓存放 HDD)会让create-project明显卡顿 - 某些 Docker 场景下,宿主机映射的缓存路径没加
:cached标签(macOS),也会拖慢速度,这不是 Composer 本身的问题,但现象容易误判 - 如果看到
Failed to extract ... invalid phar archive,大概率是缓存文件损坏,清掉新路径再重试,别复用旧缓存










