XAMPP 自带的 Shell 无法直接运行 php 命令,因其启动的是独立 cmd.exe 实例,不继承系统 PATH,也未预设 XAMPP 的 PHP 路径;需改用 Git Bash 并手动添加 /c/xampp/php 到其 PATH 才可识别 php -v。

为什么 XAMPP 自带的 Shell 不能直接运行 php 命令
XAMPP 安装后自带的 “Shell” 按钮启动的是 Windows 命令提示符(cmd.exe),它默认不把 XAMPP 的 php.exe 路径加入系统 PATH。即使你手动加了环境变量,XAMPP 的 Shell 也不会继承修改后的 PATH —— 它只读取注册表或快捷方式里硬编码的路径。
- 现象:在 XAMPP Shell 中输入
php -v报错'php' is not recognized as an internal or external command - 根本原因:XAMPP Shell 启动时未加载用户环境变量,也不自动切换到
\xampp\php\目录 - 绕过方案不是改 XAMPP,而是换终端——用 Git Bash 替代它,并让它知道 PHP 在哪
让 Git Bash 找到 XAMPP 的 php.exe
Git Bash 默认使用自己的 PATH(含 /usr/bin 等),完全不认 Windows 的环境变量。必须显式把 XAMPP 的 PHP 目录加进 Git Bash 的 PATH。
- 假设 XAMPP 装在
C:\xampp,PHP 可执行文件路径是C:\xampp\php\php.exe - 编辑
~/.bashrc(推荐)或~/.bash_profile,追加一行:export PATH="/c/xampp/php:$PATH"
- 注意路径写法:
/c/xampp/php是 Git Bash 对C:\xampp\php的映射,不能写成C:/xampp/php或c:\xampp\php - 执行
source ~/.bashrc生效,再运行php -v就能输出版本号
在 Git Bash 中直接运行 XAMPP 的 Apache 模块化 PHP
上面配置的是 CLI 版本的 php.exe,它和 Apache 加载的 PHP(php_module)是两套配置。如果你需要测试与 Apache 行为一致的 PHP(比如启用 mysqli、gd 扩展),得强制 CLI 使用 Apache 对应的 php.ini。
- CLI 默认读取
C:\xampp\php\php.ini,但 Apache 实际加载的是C:\xampp\apache\bin\php.ini(XAMPP 会 symlink 或复制) - 运行时指定配置文件:
php -c "/c/xampp/apache/bin/php.ini" script.php - 或者设别名简化:
alias phpa='php -c "/c/xampp/apache/bin/php.ini"'
,之后用phpa script.php即可 - 注意:扩展是否可用,取决于该
php.ini里extension_dir和extension=xxx的路径是否正确(通常 XAMPP 已配好)
避免和 Windows 自带 Git Bash 冲突的路径陷阱
如果你同时装了独立 Git for Windows 和 XAMPP,它们的 Git Bash 可能共用同一个 ~/.bashrc,但 XAMPP 的 PHP 路径只对本机有效。多人协作或重装系统后容易失效。
立即学习“PHP免费学习笔记(深入)”;
- 不要写死
/c/xampp/php—— 改用条件判断:if [ -d "/c/xampp/php" ]; then export PATH="/c/xampp/php:$PATH"; fi
- 更稳妥的方式是检测
php.exe是否真实存在:which php >/dev/null || { export PATH="/c/xampp/php:$PATH"; } - 如果 XAMPP 装在其他盘(如
D:\xampp),/d/xampp/php才是正确路径,/c/不会自动跳转 - 每次重装 XAMPP 后,记得检查
php -v输出的Loaded Configuration File是否指向预期的php.ini
date.timezone 设置不一致、以及 CLI 和 Web SAPI 对 $_SERVER 的不同填充方式——这些不会报错,但会让脚本行为不一致。



















