Composer环境变量配置需严格遵循硬编码前缀规则:COMPOSER_HOME必须设为绝对路径并配合PATH包含$COMPOSER_HOME/vendor/bin,且配置后须新开终端验证;所有全局配置须用composer config --global命令写入,禁止手改config.json。

Composer 没有“环境变量配置教程”这种东西——它只认几个硬编码前缀的环境变量,设错路径或混淆配置层级,90% 的问题当场失效,且不报错。
COMPOSER_HOME 必须是绝对路径,否则全局命令全丢
这个变量决定 Composer 全局配置、缓存、vendor/bin 的根目录。一旦设成 ~/.composer、$HOME/.composer 或 %APPDATA%\Composer,composer global require 安装的命令(比如 laravel、think)会静默放进错误位置,后续执行直接报 command not found。
- Linux/macOS 正确写法:
export COMPOSER_HOME="/home/username/.composer"(不能带~) - Windows 正确写法:
setx COMPOSER_HOME "C:\Users\username\AppData\Roaming\Composer"(不能用%USERPROFILE%) - 设完必须新开终端,旧窗口仍读旧值
- 验证方式:
composer config --list --global,看 “Global configuration file” 路径是否匹配你设的绝对路径
PATH 必须包含 $COMPOSER_HOME/vendor/bin,不是 composer.phar 所在目录
很多人把 C:\ProgramData\ComposerSetup\bin 加进 PATH,结果 laravel 命令还是找不到——因为那是 composer.bat 的位置,真正放可执行文件的是 COMPOSER_HOME/vendor/bin。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:在
~/.zshrc或~/.bashrc里加export PATH="$COMPOSER_HOME/vendor/bin:$PATH" - Windows:把
%COMPOSER_HOME%\vendor\bin(不是%APPDATA%\Composer\vendor\bin!除非你没设COMPOSER_HOME)加进系统 PATH - 加完后必须新开终端,运行
echo %PATH%(Windows)或echo $PATH(macOS/Linux)确认路径存在 - 再用
where laravel(Windows)或which laravel(macOS/Linux)确认指向vendor/bin下的文件
composer config --global 是唯一安全写法,手改 config.json 会出事
所有影响行为的参数——镜像源、GitHub Token、代理、缓存路径——都必须用命令写入,不能手动编辑 config.json。手动改容易 JSON 格式错误,且 composer self-update 可能覆盖它。
- 漏掉
--global参数会默默写进当前项目的composer.json,不是用户级配置 - 真正稳定全局生效的字段:
github-oauth、http-basic、http-proxy、cache-dir、process-timeout - 看似全局但受限的字段:
minimum-stability、prefer-stable——只有当前目录没有composer.json时才读全局值 - 验证是否成功:
composer config --global --list,看到目标键(如github-oauth.github.com)才算写对
运行时变量插值只在特定字段生效,.env 文件完全不参与
Composer 启动时调用 PHP 的 getenv() 解析 ${VAR_NAME},但它只在明确支持插值的字段里起作用,比如 config.http-basic 和 repositories[].url。其他地方写 ${FOO} 会被忽略,不报错也不生效。
-
composer.json里的变量只在运行时展开,不会写回文件 -
vendor/autoload.php不加载任何环境变量——它只管类映射,和.env无关 - CI/CD 中不能靠
.env文件自动注入,必须显式用env:块(GitHub Actions)、environment:(Docker Compose)或putenv()提前设置 - 本地开发可在 shell 配置文件里
export GIT_TOKEN=xxx,然后在config.http-basic中写{"example.com": {"password": "${GIT_TOKEN}"}}
最容易被忽略的是:COMPOSER_HOME 和 PATH 必须协同生效,且两者都依赖“新开终端”这一动作;只要其中任一环节没重启,就等于没配。

















