首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Windows XP/Server 2003 環境下 Apache 2.2 + PHP 5.6 + MySQL 5.6 + Zend Optimizer 完整部署指南

     編輯:PHP 相關知識

前言

雖然 Windows XP/Server 2003 已停止主流支持,但大量嵌入式設備、工控機、舊業務系統仍運行於此環境。本文記錄經典 WAMP 棧在該平台上的完整部署流程,包含版本選擇、安裝順序、配置細節、常見坑(特別是 MySQL 5.6+ 密碼插件兼容性)及驗證步驟,供維護舊系統的開發者參考。

軟件版本選擇(兼容 XP/2003 的最終版本)

組件版本下載來源(歸檔)說明
Apache2.2.31 (最終支持 XP/2003)https://archive.apache.org/dist/httpd/binaries/win32/VC6 編譯,需 VC6 版 PHP
PHP5.6.40 (最終支持 XP/2003)https://windows.php.net/downloads/releases/archives/選 VC11 x86 Non Thread Safe (FastCGI) 或 Thread Safe (mod_php)
MySQL5.6.51 (最終支持 XP/2003)https://downloads.mysql.com/archives/community/5.7+ 要求 Windows 7+
Zend Optimizer3.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-loaderPHP 5.6 必須用 Guard Loader,非 Optimizer

安裝順序與目錄規劃

D:\WebServer\
├── Apache2.2\
├── PHP5.6\
├── MySQL5.6\
└── ZendGuardLoader\
  1. 安裝 Apache 2.2.31 → D:\WebServer\Apache2.2
  2. 解壓 PHP 5.6.40 (Thread Safe) → D:\WebServer\PHP5.6
  3. 安裝 MySQL 5.6.51 → D:\WebServer\MySQL5.6(自定義目錄,避免 C:\Program Files 空格路徑)
  4. 解壓 Zend Guard Loader → D:\WebServer\ZendGuardLoader

核心配置文件修改

1. Apache httpd.conf

# 載入 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

2. PHP php.ini (從 php.ini-production 複製並重命名)

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

3. MySQL my.ini (關鍵:兼容舊密碼插件)

[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

關鍵坑點與解決方案

坑 1:PHP 5.6 連接 MySQL 5.6 報 "Client does not support authentication protocol"

原因:MySQL 5.6.6+ 默認採用 caching_sha2_password 插件,PHP 5.6 的 mysqlnd 不支持。

解決:

  1. my.ini 設置 default_authentication_plugin = mysql_native_password 並重啟 MySQL。
  2. 或為現有用戶重置密碼:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass'; FLUSH PRIVILEGES;
  3. 新建用戶時指定插件:CREATE USER 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';

坑 2:php_mysql.dll 無法加載 "The specified module could not be found"

原因:PHP 5.6 依賴 libmysql.dll (MySQL 客戶端庫),且必須與 PHP 編譯版本匹配(VC11)。

解決:

  1. 將 PHP 目錄下的 libmysql.dll 複製到 D:\WebServer\Apache2.2\bin 或系統 PATH 目錄(如 C:\Windows\System32)。
  2. 確保不衝突:刪除系統目錄下殘留的舊版 libmysql.dll。

坑 3:Zend Guard Loader 不生效

檢查清單:

  • PHP 必須是 Thread Safe (TS) 版,Non Thread Safe (NTS) 不支持。
  • zend_extension 路徑指向正確的 ZendGuardLoader.dll(PHP 5.6 專用子目錄)。
  • php -m 輸出包含 Zend Guard Loader。
  • 編碼文件需與 Loader 版本匹配(Zend Guard 7 編碼需 Loader 7)。

坑 4:Apache 啟動報 "Syntax error ... Cannot load php5apache2_2.dll"

原因:VC 運行庫缺失或 PHP/Apache 編譯器版本不匹配(VC6 vs VC11)。

解決:

  • 安裝 Visual C++ 2012 Redistributable (VC11) x86。
  • 確認 Apache 為 VC11 編譯版(Apache Lounge 提供),或統一使用 VC6 版組件。

驗證步驟

  1. 命令行執行 D:\WebServer\Apache2.2\bin\httpd.exe -t → Syntax OK
  2. 啟動 Apache 服務(或控制台運行 httpd.exe)
  3. 瀏覽器訪問 https://localhost/ → 顯示 "It works!"
  4. 創建 D:\WebServer\Apache2.2\htdocs\info.php:
  5. 訪問 https://localhost/info.php,確認:
    - PHP Version 5.6.x
    - Loaded Configuration File: D:\WebServer\PHP5.6\php.ini
    - mysqlnd, mysqli, pdo_mysql 顯示 enabled
    - Zend Guard Loader 顯示 enabled
    - 環境變量 _SERVER["DOCUMENT_ROOT"] 正確
  6. 測試 MySQL 連接:

結語

在 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 架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved