雖然 Windows XP/Server 2003 已停止主流支持,但大量嵌入式設備、工控機、舊業務系統仍運行於此環境。本文記錄經典 WAMP 棧在該平台上的完整部署流程,包含版本選擇、安裝順序、配置細節、常見坑(特別是 MySQL 5.6+ 密碼插件兼容性)及驗證步驟,供維護舊系統的開發者參考。
| 組件 | 版本 | 下載來源(歸檔) | 說明 |
|---|---|---|---|
| Apache | 2.2.31 (最終支持 XP/2003) | https://archive.apache.org/dist/httpd/binaries/win32/ | VC6 編譯,需 VC6 版 PHP |
| PHP | 5.6.40 (最終支持 XP/2003) | https://windows.php.net/downloads/releases/archives/ | 選 VC11 x86 Non Thread Safe (FastCGI) 或 Thread Safe (mod_php) |
| MySQL | 5.6.51 (最終支持 XP/2003) | https://downloads.mysql.com/archives/community/ | 5.7+ 要求 Windows 7+ |
| Zend Optimizer | 3.3.9 (PHP 5.2-5.3) / Zend Guard Loader 7.0 (PHP 5.4-5.6) | https://www.zend.com/products/php-accelerators/zend-guard-loader | PHP 5.6 必須用 Guard Loader,非 Optimizer |
D:\WebServer\
├── Apache2.2\
├── PHP5.6\
├── MySQL5.6\
└── ZendGuardLoader\
D:\WebServer\Apache2.2D:\WebServer\PHP5.6D:\WebServer\MySQL5.6(自定義目錄,避免 C:\Program Files 空格路徑)D:\WebServer\ZendGuardLoader# 載入 PHP 模塊 (Thread Safe 版)
LoadModule php5_module "D:/WebServer/PHP5.6/php5apache2_2.dll"
AddType application/x-httpd-php .php .php5 .phtml
PHPIniDir "D:/WebServer/PHP5.6"
# 站點根目錄
DocumentRoot "D:/WebServer/Apache2.2/htdocs"
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
# 默認首頁
DirectoryIndex index.php index.html index.htm
# 字符集
AddDefaultCharset UTF-8
extension_dir = "D:/WebServer/PHP5.6/ext"
; 必需擴展
extension=php_mysql.dll
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
extension=php_xmlrpc.dll
; 性能與上傳
memory_limit = 128M
post_max_size = 20M
upload_max_filesize = 20M
max_execution_time = 60
date.timezone = Asia/Shanghai
; Zend Guard Loader (PHP 5.6 必須)
zend_extension = "D:/WebServer/ZendGuardLoader/php-5.6.x/ZendGuardLoader.dll"
zend_loader.enable = 1
zend_loader.disable_licensing = 1
zend_loader.obfuscation_level = 3
[mysqld]
basedir = D:/WebServer/MySQL5.6
datadir = D:/WebServer/MySQL5.6/data
port = 3306
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-storage-engine = InnoDB
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
; 關鍵:允許 mysql_native_password (預 5.6.6 默認),解決 PHP 5.6 連接報錯
; "Client does not support authentication protocol"
default_authentication_plugin = mysql_native_password
[client]
port = 3306
default-character-set = utf8mb4
原因:MySQL 5.6.6+ 默認採用 caching_sha2_password 插件,PHP 5.6 的 mysqlnd 不支持。
解決:
default_authentication_plugin = mysql_native_password 並重啟 MySQL。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass'; FLUSH PRIVILEGES;CREATE USER 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';原因:PHP 5.6 依賴 libmysql.dll (MySQL 客戶端庫),且必須與 PHP 編譯版本匹配(VC11)。
解決:
libmysql.dll 複製到 D:\WebServer\Apache2.2\bin 或系統 PATH 目錄(如 C:\Windows\System32)。檢查清單:
zend_extension 路徑指向正確的 ZendGuardLoader.dll(PHP 5.6 專用子目錄)。php -m 輸出包含 Zend Guard Loader。原因:VC 運行庫缺失或 PHP/Apache 編譯器版本不匹配(VC6 vs VC11)。
解決:
D:\WebServer\Apache2.2\bin\httpd.exe -t → Syntax OKhttps://localhost/ → 顯示 "It works!"D:\WebServer\Apache2.2\htdocs\info.php:https://localhost/info.php,確認:在 Windows XP/2003 這類已停止支持的平台上部署現代化(相對而言)的 WAMP 棧,核心挑戰在於版本兼容性矩陣:Apache VC 編譯版本、PHP TS/NTS 選擇、MySQL 認證插件、Zend Loader 版本對應。只要嚴格遵循「VC11 全棧、Thread Safe、mysql_native_password、Guard Loader 7」四大鐵律,即可構建穩定可用的運行環境。對於新項目,強烈建議遷移至支持長期支持的作業系統(Ubuntu 22.04 LTS / Windows Server 2022 / Rocky Linux 9)並採用 PHP 8.2+、MySQL 8.0、Nginx + PHP-FPM 架構。