答案是PATH未正确配置:需确认where composer有输出,将C:\ProgramData\ComposerSetup\bin加入系统变量Path并重开终端;laravel等全局命令还需将%APPDATA%\Composer\vendor\bin加入用户变量Path。

“command not found” 或 “不是内部或外部命令” 不是 Composer 没装,而是 shell 根本没在 PATH 里看到那个可执行文件——查路径、加对位置、重开终端,三步缺一不可。
where composer 返回空,说明 PATH 没生效
Windows 上运行 where composer,如果什么也不输出,就证明你加的路径无效或根本没加。常见原因包括:
- 只改了「用户变量」Path,但安装器写的是「系统变量」路径(如
C:\ProgramData\ComposerSetup\bin) - 路径末尾多了空格、中文、反斜杠(
C:\ProgramData\ComposerSetup\bin\会失效) - 误把
php.exe所在目录(如C:\xampp\php)当成 Composer 路径加了进去 - 改完没关终端——旧 CMD/PowerShell/VS Code 进程不读新 PATH,必须完全关闭再新开
全局安装的命令(如 laravel)还是找不到
即使 composer --version 能跑,laravel -V 报错,是因为全局 bin 目录和 Composer 自身路径完全无关。它实际放在:
- Windows:
%APPDATA%\Composer\vendor\bin(即C:\Users\用户名\AppData\Roaming\Composer\vendor\bin) - Linux/macOS:
$(composer global config bin-dir --absolute)(新版默认是~/.config/composer/vendor/bin,不是旧教程写的~/.composer/vendor/bin)
务必先运行 composer global config bin-dir --absolute 查真实路径,再把该路径单独加进对应环境变量(Windows 用户变量 Path;macOS/Linux 写进 ~/.zshrc 或 ~/.bashrc),最后 source 或重启终端。
Git Bash、PowerShell、CMD 的 PATH 是各自独立的
你在系统环境变量里加了路径,不代表所有终端都能立刻用上。特别注意:
- Git Bash 不读 Windows 系统 PATH,需手动编辑
~/.bashrc,加一行:export PATH="$APPDATA/Composer/vendor/bin:$PATH" - PowerShell 可能因执行策略阻止本地脚本运行,报错类似
running scripts is disabled,临时解法:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - VS Code 终端不继承新环境变量,必须完全退出再打开,不能只关终端标签页
Mac 上 composer 命令时灵时不灵
常见于 M1/M2 芯片,本质是 PATH 加了但 shell 没加载对位置:
- Homebrew 安装的 PHP 路径应为
/opt/homebrew/bin/php,若which php返回/usr/bin/php,说明没走 Homebrew 版本 - 官方脚本装的
composer.phar必须移到/opt/homebrew/bin/composer(M 系列)或/usr/local/bin/composer(Intel),并执行sudo chmod +x -
~/.zshrc里要明确写export PATH="/opt/homebrew/bin:$PATH"(M 系列)并source ~/.zshrc,不能只靠安装器“自动配置”
PATH 配置这事,没有“差不多”,只有“绝对路径+绝对重载”。漏掉任何一个环节,命令就永远在黑盒里。











