在 Windows 搭建 LAMP(WAMP) 開發環境,版本選擇、安裝順序、配置整合、安全加固每一步都藏著坑。本文基於生產級經驗,提供版本清單、逐步安裝、配置文件、安全清單、常見漏洞修復完整流程。
| 組件 | 推薦版本 | 下載來源 |
|---|---|---|
| Apache | 2.4.x (Win64) | https://www.apachehaus.com/cgi-bin/download.plx |
| PHP | 8.2.x (Thread Safe, VS16 x64) | https://windows.php.net/download/ |
| MySQL | 8.0.x (Community, ZIP Archive) | https://dev.mysql.com/downloads/mysql/ |
| phpMyAdmin | 5.2.x | https://www.phpmyadmin.net/downloads/ |
| 工具 | HeidiSQL / DBeaver / MySQL Workbench | 官網 |
原則: 同位元數(64位)、同編譯器(VS16)、避開 RC/Alpha 版、非系統盤安裝(如 D:\Server)。
D:\Server\Apache24conf/httpd.conf:ServerRoot "D:/Server/Apache24"Listen 80LoadModule php_module "D:/Server/php/php8apache2_4.dll"PHPIniDir "D:/Server/php"DirectoryIndex index.php index.htmlAddType application/x-httpd-php .phphttpd -t → httpd -k install -n "Apache2.4" → 服務啟動D:\Server\phpphp.ini-development → php.iniextension_dir = "ext"extension=mysqliextension=pdo_mysqldate.timezone = Asia/Shanghaidisplay_errors = Onerror_log = "D:/Server/logs/php_error.log"session.save_path = "D:/Server/tmp/session"upload_max_filesize = 50Mpost_max_size = 55MD:\Server\mysql-8.0my.ini(放在 MySQL 根目錄或 C:\Windows):[mysqld]
basedir=D:/Server/mysql-8.0
datadir=D:/Server/mysql-8.0/data
port=3306
character_set_server=utf8mb4
default_authentication_plugin=mysql_native_password
innodb_buffer_pool_size=1G
max_connections=500mysqld --initialize-insecure --consolemysqld --install MySQL80 → net start MySQL80mysql -u root -p -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';"<?php phpinfo(); ?>
瀏覽器訪問 https://localhost/info.php,確認 Apache、PHP、mysqli、pdo_mysql 全部載入正常。
| 風險 | 加固措施 |
|---|---|
| PHP CGI 執行漏洞 (CVE-2012-1823 等) | 禁用 CGI 模式,僅用 mod_php (Handler);Apache 禁用 .php 執行權限於上傳目錄 |
| 目錄遍歷/信息洩露 | Options -Indexes;隱藏 ServerTokens Prod;刪除默認文檔、圖標 |
| MySQL 匿名用戶/測試庫/弱密碼 | mysql_secure_installation 或手動:DELETE FROM mysql.user WHERE User=''; DROP DATABASE test; 強密碼策略 |
| phpMyAdmin 弱口令/暴力破解 | 改裝訪問別名、IP 白名單、強制 HTTPS、雙因子認證、Fail2ban |
| 上傳文件執行 | 上傳目錄設置 php_flag engine off、禁用腳本執行擴展、文件類型白名單驗證、重命名存儲 |
| OpenSSL/組件版本過舊 | 定期更新 Apache/PHP/MySQL 至安全版本,訂閱 CVE 郵件列表 |
現象: 攻擊者上傳 shell.gif(內含 PHP 代碼),訪問 /php/php.exe/upload/shell.gif 觸發執行。
根因: PHP CGI 模式下,cgi.fix_pathinfo=1 導致路徑解析異常。
修復:
mod_php (Apache) 或 PHP-FPM (Nginx)。php.ini 設置 cgi.fix_pathinfo=0。<Directory "D:/Server/www/uploads">
php_flag engine off
SetHandler default-handler
Options -ExecCGI
</Directory>Windows WAMP 環境搭建看似簡單,實則「版本對齊、配置整合、安全加固」缺一不可。建議:開發環境用 Docker Desktop 運行官方鏡像(一致性、隔離性、可遷移性遠超手工部署);生產環境首選 Linux + 容器編排。本手冊適用於必須在 Windows 裸金屬部署的場景。