composer_home环境变量唯一决定composer全局工作路径,设则使用、不设则回退默认路径(linux/macos为~/.composer,windows为%appdata%\roaming\composer);必须设为绝对路径,且需同步将$composer_home/vendor/bin加入path,否则全局命令不可用。

COMPOSER_HOME 环境变量决定实际工作路径
Composer 没有“默认工作路径”这个模糊概念,它只认 COMPOSER_HOME 环境变量指向的目录——这是它存放 auth.json、config.json、全局插件、缓存和 vendor/bin 的唯一权威位置。设了就用,不设就 fallback 到默认路径(Linux/macOS 是 ~/.composer,Windows 是 %APPDATA%\Roaming\Composer),没有中间态。
常见错误现象:composer config --global home 输出路径和 echo $COMPOSER_HOME 不一致;或者改了环境变量后 composer global require 装的命令仍找不到。
- Linux/macOS 必须把
export COMPOSER_HOME="/path/to/composer"写进~/.zshrc或~/.bash_profile,然后source或新开终端,否则变量只在当前 shell 有效 - Windows CMD 用
setx COMPOSER_HOME "D:\my-composer",PowerShell 用[Environment]::SetEnvironmentVariable("COMPOSER_HOME", "D:\my-composer", "User"),改完必须重启终端 - 旧数据不会自动迁移:需手动复制
~/.composer/*到新目录,并检查auth.json权限(Linux/macOS 上应为600)
composer config --global home 只是配置项,不是环境变量
composer config --global home 设置的是配置文件里记录的路径值,它本身不改变运行时行为——真正起效的是 COMPOSER_HOME 环境变量。两者不一致时,环境变量永远优先。
典型误操作:只运行 composer config --global home /new/path 就以为改好了,结果 composer global list 仍从旧目录加载插件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 验证是否真生效,只看
composer config --global home输出 +echo $COMPOSER_HOME(Linux/macOS)或echo %COMPOSER_HOME%(Windows)是否一致 - 如果
config --global home显示新路径但环境变量没设,说明只是写进了配置文件,Composer 启动时根本不会读它 - 不要手改
config.json文件,composer config --global是唯一安全写入方式;漏加-g会误写进当前项目配置,导致后续composer install行为异常
PATH 中的 composer 入口和 COMPOSER_HOME 完全无关
composer 命令能不能执行,取决于系统能否在 PATH 中找到可执行文件(如 /usr/local/bin/composer 或 C:\ProgramData\ComposerSetup\bin\composer.bat);而 COMPOSER_HOME 只控制它往哪写配置和缓存。两者错配会导致“命令能跑,但全局包装不上”或“插件命令提示 not found”。
常见错误现象:where composer 返回路径 A,composer config --global home 显示路径 B,但 composer global require laravel/installer 后 laravel 命令不可用。
- 确保
$COMPOSER_HOME/vendor/bin(Linux/macOS)或%COMPOSER_HOME%\vendor\bin(Windows)已加入PATH,否则全局安装的二进制文件无法直接调用 - Windows 上
where composer若返回多个结果,说明 PATH 里混进了旧版本,要清理掉 - Git Bash 用户注意:它不继承 Windows 的 PATH 全量,需在
~/.bashrc里显式追加export PATH="/c/ProgramData/ComposerSetup/bin:$PATH"
缓存目录和全局 vendor 目录都由 COMPOSER_HOME 派生
cache-dir、data-dir、vendor-dir 这些配置项默认都是基于 COMPOSER_HOME 构建的子路径。比如 cache-dir 默认就是 $COMPOSER_HOME/cache;vendor 全局包固定装在 $COMPOSER_HOME/vendor/ 下,不能靠 COMPOSER_VENDOR_DIR 改变——那个变量只对项目级 composer install 有效。
想彻底隔离,只能换 COMPOSER_HOME,别想着单独挪缓存或 vendor。
- 改缓存路径用
composer config --global cache-dir /data/composer-cache,路径必须存在且有读写权限,不能含~ - 全局包命令失效时,先检查
$COMPOSER_HOME/vendor/bin是否在 PATH 中,再确认该目录下是否有对应可执行文件(如laravel) - CI 流水线中,如果用
sudo composer config -g,实际改的是 root 用户的配置,但 runner 以普通用户运行,必须对目标用户单独配置
where composer(Windows)或 which composer(Linux/macOS)、composer config --global home、echo $COMPOSER_HOME 三者交叉验证。










