很多新手第一次接触PHP开发时,都会选择WampServer、XAMPP这类集成环境。确实,一键安装省时省力,就像用预制菜做饭,拆开包装加热就能吃。但真正想成为厨师的人,总会从切菜备料开始学起。手动搭建WAMP环境的过程,就像亲自去菜市场挑选新鲜食材——虽然耗时,但你能清楚知道每个组件如何协同工作。
我刚开始用集成环境时,遇到端口冲突完全不知所措。后来手动配置Apache才发现,原来修改httpd.conf里Listen 80就能解决问题。这种掌控感是集成环境给不了的。更重要的是,当需要定制PHP模块或调整MySQL性能参数时,手动搭建的环境就像量身定制的西装,比集成环境这件"均码外套"合身得多。
你的Windows电脑不需要多高配置——我甚至在10年前的老笔记本上成功运行过。但建议满足:
特别提醒:确保系统盘(通常是C盘)有足够空间,因为我们要把软件都安装在这里。我有次在只剩3GB空间的电脑上安装,MySQL死活启动不了,清理磁盘后才解决。
所有软件都要从官网下载最新稳定版:
小技巧:下载时记下版本号,比如我写这篇文章时用的是Apache 2.4.57、MySQL 8.0.34和PHP 8.2.8。不同版本配置可能有差异,遇到问题可以精准搜索解决方案。
把Apache压缩包解压到C:\Apache24(路径不要有中文或空格)。目录结构应该是这样的:
code复制C:\Apache24
├── bin
├── cgi-bin
├── conf
├── error
├── icons
├── include
├── logs
├── modules
└── htdocs
重要提示:我强烈建议保持这个目录结构。有次我把Apache放在D盘,结果启动时报错找不到模块,折腾半天才发现是路径问题。
用管理员身份打开CMD,执行:
bash复制cd C:\Apache24\bin
httpd -k install
如果看到"Installing the Apache2.4 service"提示,说明安装成功。然后运行:
bash复制httpd -k start
常见问题排查:
浏览器访问http://localhost,应该看到Apache的"It works!"页面。如果改了端口,比如8080,就要访问http://localhost:8080。
把PHP解压到C:\PHP,然后:
apache复制PHPIniDir "C:/PHP"
LoadModule php_module "C:/PHP/php8apache2_4.dll"
AddType application/x-httpd-php .php
注意:php8apache2_4.dll的名字随PHP版本变化,7.x版本是php7apache2_4.dll。
打开php.ini,建议修改这些参数:
ini复制extension_dir = "C:/PHP/ext"
date.timezone = Asia/Shanghai
upload_max_filesize = 16M
post_max_size = 32M
memory_limit = 128M
然后启用常用扩展(去掉前面分号):
ini复制extension=gd
extension=mysqli
extension=openssl
extension=pdo_mysql
在htdocs下创建info.php:
php复制<?php phpinfo(); ?>
访问http://localhost/info.php,应该看到详细的PHP配置页面。我习惯把这个页面存为书签,开发时随时查看扩展和参数。
解压MySQL到C:\mysql,然后:
ini复制[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data
port=3306
以管理员运行CMD:
bash复制cd C:\mysql\bin
mysqld --initialize-insecure
mysqld --install
net start mysql
首次登录(无密码):
bash复制mysql -u root
设置root密码:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES;
在htdocs下创建test.php:
php复制<?php
$conn = new mysqli('localhost', 'root', '你的密码');
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQL连接成功";
?>
访问这个页面看到"MySQL连接成功"就大功告成了。
创建start.bat:
batch复制@echo off
net start Apache2.4
net start mysql
pause
stop.bat:
batch复制@echo off
net stop Apache2.4
net stop mysql
pause
双击这些脚本就能快速启停服务,比每次开CMD方便多了。
在httpd.conf末尾添加:
apache复制Include conf/extra/httpd-vhosts.conf
然后编辑conf/extra/httpd-vhosts.conf:
apache复制<VirtualHost *:80>
DocumentRoot "C:/projects/myapp"
ServerName myapp.test
<Directory "C:/projects/myapp">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
最后修改C:\Windows\System32\drivers\etc\hosts文件添加:
code复制127.0.0.1 myapp.test
记得定期备份httpd.conf和php.ini文件。我有次手滑改错了配置,没备份只能重装,白白浪费两小时。