XAMPP是最省事的选择,能绕开90%配置陷阱;它将Apache、PHP、MySQL等预校准打包,避免手动安装时LoadModule路径错误、PHPIniDir权限拒绝、extension_dir失效等问题,安装时须确认路径无中文/空格、端口不冲突、服务全启且http://localhost/test.php可执行PHP。

直接用 XAMPP 是最省事的选择,能绕开 90% 的配置陷阱。手动配 Apache+PHP 虽然可控,但容易卡在 LoadModule php_module 路径错误、PHPIniDir 权限拒绝、或 extension_dir 指向失效这几处。
为什么推荐 XAMPP 而不是手动安装
XAMPP 把 Apache、PHP、MySQL、phpMyAdmin 打包成一个可执行逻辑单元,所有路径、权限、服务注册都预校准过。手动安装时你得自己处理:
– httpd.conf 中 LoadModule 引用的 DLL 文件名必须和 PHP 版本严格匹配(比如 php8apache2_4.dll 不适用于 Apache 2.2);
– Windows 下若 PHP 解压路径含空格或中文,PHPIniDir 会静默失败;
– php.ini 里 extension=mysqli 开启后,extension_dir 若没指向 C:/php/ext 这类绝对路径,mysqli_connect() 就会报“Call to undefined function”;
– Apache 服务注册要用管理员权限运行 httpd.exe -k install,普通 CMD 窗口执行只会提示“OS 1053 错误”。
XAMPP 安装时三个关键动作
安装过程看似点下一步就行,但以下三步不确认清楚,后面 80% 的“localhost 打不开”“test.php 下载而不是执行”问题都源于此:
– 安装路径选非系统盘(如 D:\xampp),避免 UAC 权限拦截导致 Apache 无法写日志;
– 控制面板启动前,先点 Config → Apache (httpd.conf),搜索 Listen,把默认 Listen 80 改成 Listen 8080(尤其笔记本用户,Skype 和 IIS 常占 80);
– 启动 Apache 后,立刻在浏览器访问 http://localhost,看到 XAMPP 首页才算真正就绪;如果只显示“Not Found”,说明 Apache 没起来,别急着放 PHP 文件。
测试 PHP 是否真能解析,不是只看 phpinfo()
phpinfo() 显示页面 ≠ PHP 正常工作。它只证明解析器加载成功,不验证扩展、编码、或与 MySQL 的连通性。建议按顺序做三件事:
– 在 htdocs 下建 test.php,内容为 <?php echo 'OK'; ?>,访问 http://localhost/test.php 看是否输出 OK;
– 再建 dbtest.php,内容含 var_dump(mysqli_connect('127.0.0.1', 'root', '', 'test'));,确认 MySQL 扩展可用(首次运行前需在 phpMyAdmin 创建空库 test);
– 最后检查 error_reporting(E_ALL); ini_set('display_errors', '1'); 是否生效——很多新手写的语法错误被静默吞掉,就是因为 display_errors 在 php.ini 里被设成了 Off。
立即学习“PHP免费学习笔记(深入)”;
Laragon 适合多版本 PHP 切换场景
如果你同时维护 Laravel 5.x(需 PHP 7.3)、Laravel 10(需 PHP 8.2)、和一个遗留 WordPress 插件(只兼容 PHP 5.6),XAMPP 就力不从心了。这时 Laragon 的价值才真正体现:
– 它把每个 PHP 版本解压到独立子目录(如 C:\laragon\bin\php\php-7.3.33),切换只需右键菜单点一下;
– 虚拟主机自动绑定域名(如 myapp.test),不用改 hosts 或 httpd-vhosts.conf;
– 自带 Composer、Git、ngrok,laragon start 一条命令全服务就绪;
– 唯一要注意的是:它的默认 Web 根目录是 C:\laragon\www,不是 XAMPP 的 htdocs,项目迁移时路径别写错。
真正的坑不在安装步骤里,而在你以为“环境搭好了”之后——比如用 VS Code 写完代码,却忘了保存文件;或者改了 php.ini 但没重启 Apache;又或者以为 localhost 能直接访问子目录,其实得写成 http://localhost/myproject/index.php。环境只是工具,它不会替你记住每一步是否生效。



















