答案是path未配置导致命令找不到;composer global require仅将包解压并软链接可执行文件到全局vendor/bin目录,该路径必须手动加入系统path,否则shell无法定位命令。

为什么 composer global require 装完命令还是 command not found
它根本没在 PATH 里——composer global require 只是把包解压到全局 vendor 目录,并把 bin 字段声明的可执行文件(比如 laravel)软链接进 vendor/bin/,不会自动让 shell 找得到。系统只认 PATH 里的路径,不认你装了啥。
常见错误现象:
-
which laravel或where php-cs-fixer无输出 -
echo $PATH(macOS/Linux)或echo %PATH%(Windows)里没出现vendor/bin路径 - 明明
composer global require laravel/installer成功,但敲laravel就报错
怎么确认并配置正确的 vendor/bin 路径
别靠记忆或文档硬背路径,尤其改过 COMPOSER_HOME 的人。直接问 Composer:
运行 composer config --global bin-dir --absolute,它会输出真实路径,例如:
/home/alex/.composer/vendor/bin
或 Windows 上:
C:\Users\Alex\AppData\Roaming\Composer\vendor\bin
注意:Windows 用户不能把 %APPDATA%\Composer\vendor\bin 直接粘贴进环境变量——必须展开成完整路径,否则无效。
加 PATH 的方式:
- Linux/macOS(zsh):
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc - Linux/macOS(bash):改
~/.bash_profile,内容同上,然后source ~/.bash_profile - Windows:打开「系统属性 → 高级 → 环境变量」→ 在「用户变量」的
Path里新增一行,填完整路径,然后重启 CMD/PowerShell
哪些包能用 composer global require,哪些不能
不是所有包都提供命令行入口。只有 composer.json 里声明了 "bin" 字段的包,才会在 vendor/bin/ 下生成可执行文件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
✅ 合适的包(有 bin 字段):
-
laravel/installer→ 提供laravel命令 -
phpstan/phpstan→ 提供phpstan命令 -
friendsofphp/php-cs-fixer→ 提供php-cs-fixer命令
❌ 绝对不行的包(没 bin 字段):
-
monolog/monolog、guzzlehttp/guzzle—— 装了也没命令可用,还会污染全局 autoload 映射
查一个包有没有命令行入口,最准的方式是翻它的 Packagist 页面看 “Binaries” 栏,或直接看源码里 composer.json 的 "bin" 字段。
composer global exec 是个伪命令,别试
这个子命令在 Composer 2.0+ 中已被移除,执行 composer global exec phpunit 会直接报错:Command "global exec" is not defined。它从未真正存在过,只是早期文档误传或社区以讹传讹。
如果你非要“临时绕过 PATH”,唯一可行方式是手动调用:
~/.composer/vendor/bin/phpunit --version
但这路径因系统而异,没法跨平台复用,也不解决根本问题。真正的解法只有一个:确保 vendor/bin 路径进了 PATH,且终端已重载。
最容易被忽略的是:改完 PATH 后没新开终端,或者忘了 source 配置文件,导致反复排查“明明加了怎么还找不到”。










