根本原因是Windows未将PHP路径添加到系统环境变量PATH中,或添加后未新开命令行窗口导致环境变量未生效;需将PHP安装目录(如C:\php)加入PATH,重启终端后运行php -v验证,并用php --ini和php -m确认配置与扩展加载状态。

php.exe找不到或php -v报错
根本原因是Windows没把PHP路径加进系统环境变量,或者加了但没生效。命令行窗口必须是新打开的,旧窗口不会自动继承新环境变量。
操作要点:
- 解压PHP到纯英文路径,比如
C:\php,不能有空格或中文(如C:\Program Files\php会失败) - 右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,在“系统变量”的
Path里新建一行,填入C:\php - 关闭所有cmd/PowerShell窗口,重新打开,再运行
php -v - 如果仍报错,用
where php查系统到底调用了哪个php.exe,避免多个PHP版本冲突
php.ini配置后扩展不生效
常见现象是mysqli_connect()报Call to undefined function mysqli_connect(),说明扩展没真正加载。
关键检查点:
立即学习“PHP免费学习笔记(深入)”;
- 确认
php.ini文件名正确:必须是php.ini,不是php.ini-development或php.ini-production - 确认
extension_dir路径存在且拼写准确:extension_dir = "ext"(相对路径)或extension_dir = "C:/php/ext"(绝对路径) - 启用扩展时去掉分号,但注意有些扩展需要对应DLL文件存在,比如
extension=mysqli要求php_mysqli.dll在ext目录下 - 修改完
php.ini后,必须重启Web服务(Apache/IIS)或重开内置服务器(php -S),否则改动不生效
Apache无法解析.php文件
浏览器访问.php文件直接下载或显示源码,说明Apache没把请求交给PHP处理。
核心配置项必须全部匹配:
-
LoadModule php_module "C:/php/php8apache2_4.dll"—— DLL文件名要和你PHP版本一致(如PHP 8.3用php8apache2_4.dll,PHP 8.4可能叫php8apache2_4.dll或php8apache2_4.dll,查C:\php目录确认) -
AddHandler application/x-httpd-php .php—— 注意是.php,不是php或*.php -
PHPIniDir "C:/php"—— 路径用正斜杠或双反斜杠,单反斜杠C:\php在httpd.conf里会被当作转义字符处理 - 改完
httpd.conf后,必须执行httpd -k restart(管理员权限),不能只点Apache控制面板里的“Restart”
用php -S启动内置服务器但访问404
这是路径问题,不是PHP本身故障。内置服务器默认只服务当前目录及子目录,且DocumentRoot不可配置。
实操注意:
- 进入项目根目录再执行:
cd C:\myproject & php -S localhost:8000 - 路由文件必须叫
router.php且放在同一级目录,否则静态文件(CSS/JS)会404;如果不需要路由,直接放index.php即可 - 浏览器必须访问
http://localhost:8000/index.php,不能只输http://localhost:8000(除非index.php被设为默认首页,而内置服务器默认不支持DirectoryIndex) - 别用
php -S跑生产环境——它没有并发处理能力,多用户同时刷新就卡死
php --ini确认加载的是哪个php.ini,用php -m看实际启用的扩展列表,比凭感觉调试快得多。



















