根本原因是php.exe所在目录未加入PATH环境变量;需运行where php和echo %PATH%确认路径是否包含PHP安装目录,且必须重启Windows使新PATH对所有进程生效。

PHP 8.2 在 Windows 下输入 php -v 报 command not found 或 'php' is not recognized,根本原因不是 PHP 没装好,而是系统压根没“看见”它——php.exe 所在目录没进 PATH 环境变量,Windows 命令行自然找不到这个命令。
确认 php.exe 实际位置是否被 PATH 覆盖
先别急着重装。打开 CMD 或 PowerShell,运行:
-
where php—— 如果返回空,说明系统完全没搜到php.exe -
echo %PATH%—— 检查输出里有没有你的 PHP 安装路径(比如C:\php\8.2或C:\xampp\php) - 如果
where php返回了路径(如C:\php\8.2\php.exe),但php -v仍报错,大概率是该目录下缺依赖 DLL(见下一条)
Windows 下扩展加载失败常连带导致命令不可用
很多用户以为只是命令没识别,其实是 PHP 启动时因依赖缺失而静默崩溃。典型现象是:你双击 php.exe 没反应,或运行 php -v 直接退出、无任何输出。这往往因为 php.exe 启动时找不到 php8.dll、libcrypto-1_1.dll 等核心依赖——它们必须和 php.exe 在同一目录,且该目录必须在 PATH 中。
- 打开 PHP 安装根目录(不是
ext/子目录),确认存在php8.dll、libssh2.dll、ssleay32.dll等文件 - 把整个 PHP 根目录(例如
C:\php\8.2)添加到系统级PATH,**不要加尾部反斜杠** - 修改后必须**重启 Windows**——仅重启 CMD 或 Apache 不生效,因为 Windows 服务进程(包括 httpd.exe)启动时只读一次环境变量快照
多版本共存时 php 命令被旧版本劫持
如果你装了多个 PHP(比如 XAMPP 自带一个、自己又单独装了 8.2),PATH 里谁排前面,谁就生效。常见陷阱:
立即学习“PHP免费学习笔记(深入)”;
-
where php返回的是C:\xampp\php\php.exe,但你想用的是C:\php\8.2\php.exe→ 调整PATH顺序,把 8.2 的路径移到最前 - 不想改全局
PATH?用批处理方案:在C:\bin(已加入PATH)下建php82.bat,内容为:@C:\php\8.2\php.exe %*,之后直接输php82 -v - 避免用软链接或快捷方式——CMD 不认这些,只认真实可执行文件路径
最易被忽略的一点:PATH 修改后不重启系统,Apache 和后台服务永远看不到新路径;而开发者常以为“重载配置”就够了,其实底层 loader 已经锁死了依赖查找范围。



















