根本原因是系统PATH未包含PHP或Composer可执行文件路径:Windows需将PHP目录(如C:\php)和Composer安装路径(如C:\ProgramData\ComposerSetup\bin)加入系统环境变量并重启终端;Linux/macOS需将php和composer.phar所在目录(如/usr/local/bin、/opt/homebrew/bin、~/.config/composer/vendor/bin)添加到shell配置文件(~/.zshrc或~/.bashrc)并source生效。

为什么 composer 执行报 “Command not found” 或 “PHP is not recognized”
根本原因不是 Composer 本身坏了,而是系统找不到 php 可执行文件——Windows 没把 PHP 的安装目录加进 PATH,Linux/macOS 用户可能装了 PHP 但没软链到 /usr/bin/php 或没刷新 shell 环境。
典型现象包括:composer install 直接报错 PHP is not recognized as an internal or external command(Windows),或 Linux 下提示 bash: php: command not found。
- Windows:PHP 安装后默认不自动写入系统环境变量,哪怕你双击运行过
php.exe - macOS:用
brew install php后,新版 Homebrew 把 PHP 装在/opt/homebrew/bin/(Apple Silicon)或/usr/local/bin/(Intel),但 shell 可能没加载该路径 - Linux(如 Ubuntu):
apt install php-cli通常没问题,但若手动编译安装,php二进制很可能在/usr/local/bin/或~/php/bin/,不在默认PATH
Windows 添加 PHP 到系统 PATH 的实操步骤
别只改当前 CMD 窗口的临时变量——那对 Composer 没用,它启动时读的是系统级或用户级 PATH。
- 找到你的 PHP 安装目录,比如
C:\php或C:\xampp\php,确认里面存在php.exe - 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”
- 在“系统变量”里找到
Path,点“编辑” → “新建”,填入 PHP 目录完整路径(例如:C:\php) - ⚠️ 不要加末尾反斜杠,也不要写成
C:\php\php.exe—— 只填目录,系统会自动找可执行文件 - 重启所有已打开的终端(CMD、PowerShell、IDE 内置终端),再运行
php -v和composer -V验证
macOS/Linux 配置 PATH 让 shell 找到 php
关键不是“加了没”,而是“shell 加载了没”。很多人改完 ~/.zshrc 或 ~/.bashrc 就以为完事,其实新终端窗口才生效,旧窗口仍用老环境。
- 先查 PHP 实际位置:
which php或find /usr -name php 2>/dev/null | grep bin - 如果返回为空,说明确实没在
PATH里;若有结果(如/opt/homebrew/bin/php),把它所在目录加进 shell 配置文件 - 编辑配置文件:
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc(M1/M2 Mac)或echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc(Linux) - 立即生效:
source ~/.zshrc(zsh 默认)或source ~/.bashrc(bash) - 验证:
echo $PATH看是否含目标路径,再试php -v
Composer 自带 PHP 检测失败的绕过与排查
即使 php -v 正常,composer 仍可能报错“PHP version too old”或“PHP binary not found”,这时它不是在找系统 php,而是在读自己的配置或检测扩展。
- 运行
composer diagnose,它会逐项检查 PHP 路径、版本、必需扩展(如json、mbstring、curl) - 若提示
PHP binary path是空或错误,可强制指定:composer config -g -- php-binary /usr/bin/php - 某些 IDE(如 PHPStorm)内置终端可能继承了错误的环境变量,建议在纯终端中测试,排除 IDE 干扰
- Windows 用户注意:如果用了 WSL,
composer在 Windows 命令行下不会识别 WSL 中的 PHP,两者环境完全隔离
最常被忽略的是:改完 PATH 后没关掉所有终端再重开,或者误把 php.exe 的全路径当目录加进了 PATH。路径这东西,差一个字符、多一个斜杠,就彻底失效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











