git bash 默认不识别 php 命令,因其不继承 windows 系统 path,需手动在 ~/.bashrc 中添加 export path="/c/xampp/php:$path" 并 source 生效;交互式命令(如 php -a)还需 winpty 包裹,非交互式脚本则无需。

Git Bash 能直接运行 PHP 脚本,但默认不识别 php 命令,也不支持交互式命令(如 php -a、mysql),必须手动配置路径 + 用 winpty 包裹交互命令。
为什么 php script.php 报错“command not found”
Git Bash 不继承 Windows 系统 PATH,它只认自己内置的 /usr/bin 和你显式添加的路径。XAMPP 或 PhpStudy 的 php.exe 即使已加到系统环境变量,在 Git Bash 里也完全不可见。
-
/c/xampp/php是 XAMPP 默认 PHP 目录在 Git Bash 下的正确写法(不是C:\xampp\php,也不是C:/xampp/php) - 编辑
~/.bashrc或~/.bash_profile,追加:export PATH="/c/xampp/php:$PATH" - 执行
source ~/.bashrc生效,再试php -v - 若用 PhpStudy、Wamp 等,替换路径为对应位置,例如
/d/phpstudy_pro/Extensions/php/php8.1.10nts
执行 php -a、php -S 或连 MySQL 就卡住
这是 Git Bash 在 Windows 上的已知限制:它无法原生处理需要伪终端(PTY)的交互程序。直接运行会挂起、无响应、无法输入。
- 所有交互式命令必须前置
winpty:winpty php -awinpty php -S localhost:8000winpty mysql -uroot -p -
winpty是 Git Bash 自带的工具,无需额外安装 - 非交互场景(如
php script.php、php artisan migrate)不需要winpty,加了反而报错
想让 CLI 行为和 Apache 加载的 PHP 一致
XAMPP 的 CLI 默认读 C:\xampp\php\php.ini,而 Apache 实际加载的是 C:\xampp\apache\bin\php.ini(可能 symlink 或复制)。扩展启用状态、extension_dir、时区等可能不一致。
- 运行时指定配置:
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=openssl等行是否取消注释,且extension_dir指向正确目录(通常是"./ext")
最易忽略的一点:路径判断要加保护。多人共用或重装系统后,/c/xampp/php 可能不存在,直接 export PATH 会导致后续命令异常。务必用条件判断包裹:if [ -d "/c/xampp/php" ]; then export PATH="/c/xampp/php:$PATH"; fi
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











