绝大多数人应直接使用 xampp/wamp/mamp 等集成环境,省事且适合本地开发;手动安装仅适用于调参、学原理或生产部署。xampp 不可用于生产环境,注意安全配置与端口暴露风险。

用 XAMPP 还是手动装 Apache + PHP + MySQL?
绝大多数人直接用 XAMPP 或 WAMP(Windows)、MAMP(macOS)更省事,它们把 Apache、PHP、MySQL 打包好了,启动服务就跑起来。手动编译安装只适合想调参数、学原理或部署生产环境的人——本地测试没必要。
注意:XAMPP 默认关闭了外部访问和部分安全模块(比如 open_basedir 限制较松),别把它当生产环境用;也别在公司内网直接开 XAMPP 的 80 端口对外暴露。
- Windows 用户优先选
WAMP:右键托盘图标可快速切换 PHP 版本,php.ini双击就能编辑 - macOS 用户推荐
MAMP(免费版够用),避免和系统自带的php冲突;如果用 Homebrew,brew install httpd php mysql也能搭,但得自己配httpd.conf和LoadModule - Linux(如 Ubuntu)建议用
apt install apache2 php libapache2-mod-php mysql-server,比打包套件更干净,也方便后续迁移到服务器
PHP 版本选哪个?怎么确认它真在生效?
别无脑选最新版。主流 CMS(WordPress、Drupal)和框架(Laravel 10+)要求 PHP 8.1 起步,但很多老项目还卡在 PHP 7.4 甚至 5.6。搭环境前先看项目 composer.json 里的 "php": ">=7.4.0" 或 .php-version 文件。
验证是否生效,不能只看 php -v ——那是 CLI 模式;浏览器里跑的才是 Web Server 模式。必须建一个 info.php 放到 htdocs 目录下,内容只有一行:<?php phpinfo(); ?>,然后访问 http://localhost/info.php,重点核对页面顶部的 PHP Version 和 Loaded Configuration File 路径是否匹配你改过的 php.ini。
立即学习“PHP免费学习笔记(深入)”;
-
phpinfo()页面里搜Loaded Modules,确认mysqli、pdo_mysql、curl这些扩展已启用 - 如果改了
php.ini但没生效,大概率是没重启 Apache(XAMPP Control Panel里点Restart,不是只点Start) - Mac 上用
MAMP时,CLI 的php命令默认还是系统自带的,要用/Applications/MAMP/bin/php/php8.2.12/bin/php -v指定路径
访问 localhost 显示 403 或空白页?几个关键检查点
不是所有“搭好了”都能立刻跑代码。常见问题集中在文档根目录权限、URL 路由和 Apache 配置上。
- 确保你的 PHP 文件放在正确的根目录:XAMPP 是
htdocs,WAMP 是www,MAMP 是htdocs(不是应用安装目录下的bin/php) - Apache 默认禁止访问子目录下的
.htaccess,如果项目用了 Laravel 或 WordPress 的伪静态,要确认httpd.conf里有AllowOverride All,且对应目录段落没写成AllowOverride None - macOS 上 Safari 有时会缓存 403 响应,换 Chrome 或 curl 测试:
curl -I http://localhost/test.php,看返回是不是HTTP/1.1 200 OK - Windows 下杀毒软件(尤其是 McAfee、Avast)可能拦截 Apache 绑定 80 端口,临时禁用或换端口(XAMPP 设置里改 Apache → Port)
数据库连不上?mysqli_connect() 报错怎么快速定位
错误信息里带 Connection refused 或 Access denied 是最常遇到的两类。前者是服务根本没起来,后者是账号密码或权限不对。
先用命令行确认 MySQL 是否运行:mysql -u root -p(XAMPP/WAMP 默认空密码;MAMP 默认密码 root)。连不上就打开控制面板,单独启动 MySQL 服务。
- PHP 代码里用
mysqli_connect('localhost', 'root', '', 'test'),别写127.0.0.1——某些配置下localhost走 socket,127.0.0.1走 TCP,行为不一致 - 新建数据库用户时,Host 字段别填
%就完事,本地开发填localhost更稳妥;phpMyAdmin 里创建用户后,记得点“刷新权限” - 如果用 PDO,错误提示容易被吞掉,加这句开启报错:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
apache/logs/error.log 和 php/logs/php_error_log,比反复重装快得多。











