虽然现代开发推荐使用 Docker、Laravel Valet、PHPStudy 等一体化工具,但理解手动配置 PHP+Apache+MySQL 的底层原理,对排查线上环境问题、定制化编译扩展仍有重要价值。本文详细记录 Win7 x64 下各组件的下载、安装、配置与联调全过程。
| 组件 | 版本 | 官方下载页 |
|---|---|---|
| PHP | 5.6.40 (VC11 x64 Non Thread Safe) | PHP For Windows Archives |
| Apache | 2.4.41 (Win64 OpenSSL 1.1.1) | Apache Lounge |
| MySQL | 5.6.48 (Windows x64) | MySQL Archives |
| VC++ 运行库 | Visual C++ Redistributable for Visual Studio 2012 (VC11) | Microsoft Download |
关键提示:PHP 5.6 要求 VC11 运行库,Apache 2.4 要求 VC11/VC14,务必先安装对应版本 VC++ 运行库,否则启动报VCRUNTIME140.dll 丢失或MSVCR110.dll 丢失。
D:\DevEnv\
├── Apache24\ # Apache 解压目录
├── PHP56\ # PHP 解压目录
├── MySQL56\ # MySQL 安装目录
└── www\ # Web 根目录
└── index.php # 测试文件
conf/httpd.conf:
Define SRVROOT "D:/DevEnv/Apache24"Listen 80ServerName localhost:80LoadModule rewrite_module modules/mod_rewrite.soconf/extra/httpd-vhosts.conf 中添加 <VirtualHost *:80> ... </VirtualHost> 并包含 Require all granted。httpd.exe -k install -n "Apache2.4" 安装为系统服务,再 net start Apache2.4 启动。php.ini-development 为 php.ini。extension_dir = "D:/DevEnv/PHP56/ext"
date.timezone = Asia/Shanghai
; 开启常用扩展
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_curl.dll
extension=php_openssl.dll
; 会话存储
session.save_path = "D:/DevEnv/PHP56/tmp"
; 错误显示(开发环境)
display_errors = On
error_reporting = E_ALL
在 httpd.conf 末尾添加:
# PHP 5.6 Module
LoadModule php5_module "D:/DevEnv/PHP56/php5apache2_4.dll"
PHPIniDir "D:/DevEnv/PHP56"
AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php .html
DirectoryIndex index.php index.html
注意:必须下载 Non Thread Safe (NTS) 版 PHP 配合php5apache2_4.dll,或使用 Thread Safe (TS) 版配合php5apache2_4.dll,两者不可混用。
D:\DevEnv\MySQL56。mysql -u root -p 登录,执行 SHOW VARIABLES LIKE 'character_set%'; 确认均为 utf8 或 utf8mb4。D:\DevEnv\www 创建 index.php:<?php phpinfo(); ?>https://localhost/,确认 PHP 版本、Loaded Configuration File、mysqli/gd/curl 扩展已加载。test_db.php 测试数据库连接:<?php $mysqli = new mysqli('127.0.0.1', 'root', 'your_pass', 'test'); var_dump($mysqli->connect_errno); ?>| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| Apache 启动闪退 | 端口 80 被占用 (IIS/Skype/VMware) | 修改 Listen 8080 或停止占用进程 |
| PHP 模块加载失败 | VC++ 运行库缺失 / TS/NTS 不匹配 | 安装 VC11/VC14 运行库,重新下载对应版本 PHP |
| mysqli 连接报错 | MySQL 未启动 / 密码错误 / skip-networking | 检查服务状态,重置密码,注释 my.ini 中 skip-networking |
| 中文乱码 | 数据库/表/连接字符集不一致 | 统一设为 utf8mb4,PHP 连接前执行 SET NAMES utf8mb4 |
手动搭建 LAMP/WAMP 环境能深入理解 Web 服务器、PHP SAPI、数据库驱动的交互细节。生产环境建议迁移至 Linux + Nginx + PHP-FPM + MySQL/PostgreSQL,并通过 Docker 实现不可变基础设施部署。