COMPOSER_HOME环境变量唯一决定全局配置目录位置,Composer启动时优先读取该变量值作为权威路径;必须设为绝对路径,不可含~、$HOME等占位符,否则静默回退默认路径。

COMPOSER_HOME 决定全局配置目录位置
Composer 启动时第一件事就是读 COMPOSER_HOME 环境变量;设了就用它,不设才 fallback 到默认路径(Linux/macOS 是 ~/.composer 或 ~/.config/composer,Windows 是 %APPDATA%\Roaming\Composer)。这不是可选项,而是唯一权威路径来源——auth.json、config.json、缓存、全局 bin 文件全跟着走。
常见错误是设成相对路径(如 ./composer)或含 ~、$HOME、%USERPROFILE% 这类占位符,结果 Composer 直接忽略,静默退回到默认路径。必须用绝对路径。
- Linux/macOS:写进
~/.zshrc或~/.bashrc,例如export COMPOSER_HOME="$HOME/.my-composer",然后运行source ~/.zshrc - Windows(PowerShell):
[Environment]::SetEnvironmentVariable("COMPOSER_HOME", "D:\my-composer", "User"),之后重启终端 - 验证是否生效:
composer config --global home输出应与你设置的完全一致
全局命令能运行的前提是 vendor/bin 在 PATH 里
执行 composer global require laravel/installer 成功 ≠ laravel -V 能跑。Composer 只负责把可执行文件放进 $COMPOSER_HOME/vendor/bin,它不会自动加进系统 PATH。
所以第一步不是重装包,而是确认 bin 目录在哪:composer global config bin-dir --absolute。这个命令输出的路径,才是你该加进 PATH 的真实位置。
- Linux/macOS:在
~/.zshrc末尾加export PATH="$(composer global config bin-dir --absolute):$PATH",再source ~/.zshrc - Windows:把
%APPDATA%\Composer\vendor\bin(或你自定义的$COMPOSER_HOME\vendor\bin)加进「用户变量」里的Path - 改完必须新开终端,VS Code 需完全退出重开——旧进程不读新环境
环境变量插值只在特定 config 字段生效
Composer 支持在 composer.json 里用 ${VAR_NAME} 占位符,但仅限明确文档标注支持插值的字段,比如:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
config.http-basic:可写{"example.com": {"username": "${GIT_USERNAME}", "password": "${GIT_TOKEN}"}} -
repositories[].url:如"${PRIVATE_REPO_URL}" -
config.process-timeout、config.notify-batch等数值型配置
这些变量由 PHP 的 getenv() 解析,所以得提前在 shell、CI env 块、Docker --env 或 systemd 中显式注入。别指望 .env 文件自动加载——它对 Composer 运行时变量插值完全无效。
没定义的变量会被忽略,不报错,容易导致静默失败。建议用 composer config --list --global 检查实际生效的配置值。
PHP_BINARY 对 Windows 上的 composer.bat 无效
你在系统变量里设了 PHP_BINARY=C:\xampp\php\php.exe,但 composer --version 仍报错?因为官方 composer.bat 是批处理脚本,内部硬编码调用 php 命令,完全忽略 PHP_BINARY。
打开 composer.bat 用记事本搜索,大概率看到这行:php "%~dp0composer.phar" %*。它不读环境变量。
- 最稳解法:删掉
composer.bat,直接用php composer.phar调用(把composer.phar放进 PATH 所含目录) - 次选方案:手动编辑
composer.bat,把php替换成绝对路径,例如"C:\xampp\php\php.exe"(注意英文双引号,路径含空格时必加) - PowerShell 用户可加函数:
function composer { php C:\tools\composer.phar @args }
复杂点在于:不同安装方式(官方安装器、手工下载、scoop、choco)产生的入口文件类型不同,composer.bat、composer(shell 脚本)、composer.phar 行为不一致,得先确认你用的是哪个。

















