Composer命令提示“command not found”的最常见原因是其全局bin目录未加入PATH环境变量,需手动添加~/.composer/vendor/bin(Linux/macOS)或%APPDATA%\Composer\vendor\bin(Windows),并重载shell配置或重启终端。

PATH 里没加 Composer 全局 bin 目录
执行 composer 命令提示“command not found”,最常见原因是 Composer 安装后生成的可执行文件(比如 composer.phar)没放进系统 PATH,或者全局安装的二进制路径未被识别。
Composer 默认会把全局包的可执行文件放在:~/.composer/vendor/bin(Linux/macOS)或 %APPDATA%\Composer\vendor\bin(Windows)。这个目录必须显式加入 PATH,否则 shell 找不到 composer 命令。
- Linux/macOS:在
~/.bashrc、~/.zshrc或对应 shell 配置文件末尾加一行:export PATH="$HOME/.composer/vendor/bin:$PATH"
- Windows(CMD/PowerShell):用系统属性 → “环境变量” → 编辑用户变量
PATH,新增条目:%APPDATA%\Composer\vendor\bin - 改完后务必重新打开终端,或运行
source ~/.zshrc(macOS/Linux)使配置生效
用 curl 下载的 composer.phar 没设执行权限或没软链
如果跳过官方安装脚本,直接用 curl 下载了 composer.phar(例如放到 /usr/local/bin/composer),它默认不是可执行文件,也不能直接调用。
- 先确认文件存在且可读:
ls -l /usr/local/bin/composer - 加上执行权限:
chmod +x /usr/local/bin/composer
- 或者更稳妥的做法是创建符号链接(避免权限和 PHP 解释器路径问题):
sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
- 注意:如果用
php composer.phar能运行,但composer不行,基本就是没加权限或没建 link
Windows 上 Composer Installer 安装后仍找不到命令
Windows 用户用官方 Composer-Setup.exe 安装时,若勾选了“Add to PATH”,理论上应自动生效。但实际常因权限、UAC、多用户或 PowerShell 执行策略导致失败。
- 检查是否真写入了 PATH:
echo %PATH%(CMD)或$env:PATH(PowerShell),搜索是否有Composer\vendor\bin - 若没有,手动添加;若有,但命令仍无效,可能是 PowerShell 默认禁用脚本执行 —— 运行
Get-ExecutionPolicy,如返回Restricted,需临时放宽:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 某些杀毒软件(如 McAfee、Bitdefender)会拦截
.bat或.cmd文件执行,导致composer命令静默失败,可尝试在 CMD 中直接运行composer.bat看报错
多个 Composer 版本冲突或路径覆盖
当系统中同时存在手动安装的 composer.phar、Homebrew 安装的 composer、Docker 内的 Composer,或不同用户下的 .composer 目录,容易出现 PATH 顺序错乱、旧版本残留、命令指向错误等问题。
- 查当前
composer实际位置:which composer(macOS/Linux)或where composer(Windows CMD) - 查实际执行的是哪个文件:
composer --version和head -n1 $(which composer)(看是否为 shebang 脚本) - 如果发现指向的是旧版或错误路径(如
/usr/bin/composer是系统包管理器装的老旧版),建议删掉该文件,确保~/.composer/vendor/bin/composer在 PATH 中靠前 - Homebrew 用户注意:
brew install composer会把二进制放/opt/homebrew/bin/composer(Apple Silicon)或/usr/local/bin/composer(Intel),要确认该路径已在 PATH 中且优先级高于其他










