COMPOSER_HOME 和 PATH 必须配对设置且均为绝对路径;COMPOSER_HOME 决定全局包安装位置,PATH 必须显式包含其 vendor/bin 子目录,二者缺一或设错均导致全局命令不可用。

COMPOSER_HOME 和 PATH 是唯二必须配对设置的环境变量,缺一不可;设错 COMPOSER_HOME 会导致全局命令静默装进错误目录,PATH 再对也找不到。
COMPOSER_HOME 必须是绝对路径,且不能含环境变量
Composer 启动时直接读取该值拼接 vendor/bin,不展开 ~、$HOME、%USERPROFILE% —— 所以 ~/composer 或 %APPDATA%\Composer 这类写法全无效。
- Linux/macOS 正确写法:
export COMPOSER_HOME="/home/alex/.my-composer"(加到~/.zshrc或~/.bashrc) - Windows 正确写法(用户级):
setx COMPOSER_HOME "C:\Users\Alex\AppData\Roaming\Composer" - 设完必须新开终端,
source ~/.zshrc不生效 —— 因为 Composer 在 shell 初始化前就读环境变量 - 验证是否生效:
composer config --global --list,第一行 “Global configuration file” 显示的路径必须和你设的一致
PATH 必须显式包含 $COMPOSER_HOME/vendor/bin(Linux/macOS)或 %COMPOSER_HOME%\vendor\bin(Windows)
Composer 从不修改系统 PATH,composer global require 只负责把可执行文件放进 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末尾加export PATH="$COMPOSER_HOME/vendor/bin:$PATH"(顺序很重要,放前面防系统同名命令覆盖) - Windows:在「系统属性 → 高级 → 环境变量」中,把
%COMPOSER_HOME%\vendor\bin加进「用户变量」的 PATH(不是系统变量,也不要用%APPDATA%\Composer\vendor\bin,除非没设COMPOSER_HOME) - 改完 PATH 后必须新开终端,用
echo $PATH或echo %PATH%确认路径已存在 - 再运行
which laravel(Linux/macOS)或where laravel(Windows),输出应指向vendor/bin下的真实文件
别信 composer global list 就代表命令能用
这个命令只说明包已下载并解压进 vendor,完全不检查 bin 是否可执行、PATH 是否包含对应目录。
- 很多包根本没声明
"bin"字段(比如monolog/monolog),global require成功也没命令可用 - 查一个包有没有命令入口:看 Packagist 页面的 “Binaries” 栏,或翻它源码里的
composer.json中"bin"键 - 即使有
"bin": ["phpunit"],若本地php不在 PATH,脚本仍会报错“php: command not found” - 临时验证 PATH 是否生效最简单方式:
laravel --version或phpunit --version,报command not found就一定是 PATH 没对
最容易被忽略的是:COMPOSER_HOME 设错后,composer global require 会静默把文件写进错误路径,后续所有排查都绕不开这个点;而 PATH 漏加 vendor/bin 是唯一导致“明明装了却用不了”的原因 —— 其他任何配置错误都不会让命令彻底消失。

















