根本原因是composer全局bin目录未加入path,需运行composer global config bin-dir --absolute查出真实路径,再将其添加到系统path并重启终端验证;windows加至用户变量path,macos/linux写入~/.zshrc并source生效。

根本不是命令没装成功,是系统压根没找到那个可执行文件——composer global require只负责把二进制链接放进vendor/bin目录,PATH不包含它,就永远command not found。
确认全局bin路径在哪
别猜、别硬写路径,直接让Composer告诉你真实位置:
- 运行
composer config --global bin-dir --absolute,输出类似C:\Users\Alice\AppData\Roaming\Composer\vendor\bin(Windows)或/home/alice/.composer/vendor/bin(Linux/macOS) - 检查该目录下是否存在对应命令文件:Windows 看有没有
laravel.bat,macOS/Linux 看有没有laravel(无后缀),没有说明包没声明bin字段,或安装失败 - 注意:
composer config --global bin-dir不加--absolute会返回相对路径,容易误判
把路径加进PATH并生效
加完PATH不重启终端=白加,旧进程不会读新环境变量:
- Windows:在「系统属性 → 高级 → 环境变量」中,把上一步查出的完整路径加到「用户变量」的
Path里(不是系统变量),**必须关闭所有已打开的 CMD/PowerShell/VS Code 终端,再新开一个** - macOS/Linux:在
~/.zshrc(推荐)或~/.bashrc末尾加一行export PATH="$HOME/.composer/vendor/bin:$PATH",然后运行source ~/.zshrc - Git Bash(Windows):它不读 Windows 系统PATH,需手动编辑
~/.bashrc,加export PATH="$APPDATA/Composer/vendor/bin:$PATH"
验证是否真生效
别信“我加了”,要看到实际输出才作数:
- 运行
echo $PATH(macOS/Linux)或echo %PATH%(Windows),确认输出里包含你刚加的路径 - 运行
which laravel(macOS/Linux)或where laravel(Windows),能打出完整路径才算成功 - 如果仍报错,检查路径末尾有没有多余空格、中文字符、反斜杠;别把
php.exe所在目录误当成 Composer 的bin目录加进去
常见连环坑:PHP_BINARY 设置无效
你在系统变量里设了 PHP_BINARY=C:\xampp\php\php.exe,但 composer --version 还报错?因为官方 composer.bat 是批处理脚本,内部写死调用 php 命令,完全忽略 PHP_BINARY。
- 验证方法:用记事本打开
composer.bat,搜php ",大概率看到这行:php "%~dp0composer.phar" %* - 最稳解法:删掉
composer.bat,改用php composer.phar方式调用;PowerShell 中可加函数:function composer { php C:\tools\composer.phar @args } - 次选方案:手动编辑
composer.bat,把php替换成绝对路径,例如"C:\xampp\php\php.exe"(含英文双引号,路径含空格时必加)
PATH配置是全局命令可用的唯一前提,其他操作都建立在这个基础上;很多人反复重装、清缓存、换镜像,却卡在第一步没加对路径——它不报错,也不提示,只是静默失效。











