COMPOSER_HOME 是 Composer 存储全局配置、缓存、插件和认证信息的目录,Linux/macOS 默认为 ~/.composer,Windows 默认为 %APPDATA%\Composer;修改需设置环境变量并手动迁移数据。

Composer 的 COMPOSER_HOME 是什么
COMPOSER_HOME 是 Composer 用来存放全局配置、缓存、插件和认证信息的目录,默认路径因系统而异:~/.composer(Linux/macOS)或 %APPDATA%\Composer(Windows)。它不控制 vendor/ 下载位置,只影响 Composer 自身运行时的元数据存储。
修改 COMPOSER_HOME 环境变量的实操方式
改路径本质是覆盖默认环境变量,需在 shell 启动前生效。不同系统操作略有差异:
- Linux/macOS:在
~/.bashrc、~/.zshrc或系统级/etc/environment中添加export COMPOSER_HOME="/path/to/my/composer-home",然后执行source ~/.zshrc - Windows(CMD):运行
setx COMPOSER_HOME "D:\my-composer"(需重启终端) - Windows(PowerShell):在
$PROFILE中添加$env:COMPOSER_HOME="D:\my-composer" - 验证是否生效:执行
composer config --global home,输出应为新路径;也可用echo $COMPOSER_HOME(Unix)或echo %COMPOSER_HOME%(Windows)确认
改完后要注意的几个关键点
环境变量变更不会自动迁移旧数据,且部分行为依赖路径初始化时机:
- 首次使用新
COMPOSER_HOME时,Composer 会自动创建auth.json、config.json和cache/目录,但不会复制原有配置或凭证——需手动拷贝auth.json和config.json(如有自定义设置) - 若之前用过
composer global require,对应全局包仍留在旧vendor/下,新路径下需重新安装,否则composer global list为空 - 某些 CI 环境或 Docker 容器中,环境变量可能被覆盖或未加载 shell 配置文件,建议在脚本开头显式设置
COMPOSER_HOME -
COMPOSER_HOME路径含空格或中文在 Windows 上通常无问题,但在旧版 Composer(
替代方案:用 --global 配置项局部覆盖
如果只是想换缓存或仓库路径,不一定非要动 COMPOSER_HOME。Composer 支持更细粒度的配置:
- 仅改缓存目录:
composer config --global cache-dir "/path/to/cache" - 仅改数据目录(如插件):
composer config --global data-dir "/path/to/data" - 这些配置写入
$COMPOSER_HOME/config.json,优先级低于环境变量但更安全可控 - 注意:一旦设定了
COMPOSER_HOME,data-dir和cache-dir的默认值就基于它计算,所以先定COMPOSER_HOME再调其他路径更稳妥
真正麻烦的不是改路径本身,而是忘记同步 auth.json 或误以为全局包会自动迁移——这两处出错,后续 composer global update 或私有包安装就会静默失败。










