Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Windows Server 2003 搭建 Apache + PHP + MySQL 環境實戰筆記:9 大避坑指南

編輯:關於伺服器

在 Windows Server 2003 上手工部署 Apache 2.2 + PHP 5.2 + MySQL 5.0 環境,雖然現在極少見,但維護舊系統時仍會遇到。本文記錄實戰中踩過的 9 個坑及解決方案,作為遺產系統運維的參考檔案。

環境基線

  • OS: Windows Server 2003 SP2 (x86)
  • Apache: 2.2.6 (Win32, 安裝包)
  • PHP: 5.2.4 (ZIP 包, 解壓部署)
  • MySQL: 5.0.45 (安裝包)
  • phpMyAdmin: 2.11.1 (解壓部署)

9 大避坑指南

1. PHP 核心 DLL 必須進系統目錄

現象:Apache 啟動報錯「找不到 php5ts.dll」或 PHP 模塊加載失敗。

解決:將 PHP 目錄下的 php5ts.dll 和 libmysql.dll **複製到 C:\Windows\System32\** (或 C:\Windows\)。雖然可通過 PATH 環境變量指向 PHP 目錄,但進 System32 最穩妥、兼容性最好 (尤其舊版 PHP)。

2. php.ini 位置與 Apache 載入指令

現象:phpinfo() 顯示 Configuration File Path 為 C:\Windows,但實際讀取的是 PHP 目錄下的 ini,配置不生效。

解決:

  1. 將 php.ini-dist 重命名為 php.ini 留在 PHP 目錄 (如 C:\PHP\php.ini)
  2. 在 Apache httpd.conf 中添加:
    PHPIniDir "C:/PHP/" (注意斜槓方向、結尾斜槓、引號)
  3. **不要**複製 php.ini 到 Windows 目錄,避免多版本衝突

3. Apache 403 Forbidden — DocumentRoot 權限

現象:訪問網站根目錄返回 403。

解決:修改 httpd.conf 中 DocumentRoot 指向實際站點目錄 (如 I:/blog),並確保該目錄及父目錄對 **Apache 運行用戶 (通常是 SYSTEM 或指定服務帳戶) 有讀取/執行權限**。
關鍵配置段:


    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all

4. .htaccess 不生效 — AllowOverride 設置

現象:URL 重寫、防盜鏈、認證等 .htaccess 規則完全不生效。

解決:在 httpd.conf 對應 Directory 塊中設置:
AllowOverride All (或至少 AllowOverride FileInfo)
默認是 AllowOverride None,會忽略 .htaccess。

5. phpMyAdmin Blowfish Secret 必填

現象:登錄 phpMyAdmin 提示「配置文件需要一個 blowfish_secret 密碼」。

解決:複製 config.sample.inc.php 為 config.inc.php,設置:
$cfg['blowfish_secret'] = 'dfdf877ddff'; // 任意 32 位隨機字符串

6. phpMyAdmin 1045 錯誤 — 域名訪問被視為遠程

現象:用 https://localhost/phpmyadmin 正常,用 https://domain.com/phpmyadmin 報 1045 (Access denied)。

根因:MySQL 用戶 root@localhost 僅允許本地連接,域名解析到本機 IP 但 MySQL 判定為遠程連接 (非 localhost / 127.0.0.1),匹配 root@% 或 root@domain.com,而這些用戶不存在或密碼不同。
解決:

  • 創建 root@'%' 用戶並授權 (不安全,僅測試用)
  • **推薦**:phpMyAdmin 配置強制使用 127.0.0.1 連接 MySQL:
    $cfg['Servers'][$i]['host'] = '127.0.0.1';

7. mcrypt 擴展缺失提示 — 可選修復

現象:phpMyAdmin 頂部黃條提示「無法載入 mcrypt 擴展」。

解決 (若業務需要 mcrypt):
1. php.ini 中取消註釋 extension=php_mcrypt.dll
2. 將 PHP 目錄下的 libmcrypt.dll 複製到 C:\Windows\System32\
3. 重啟 Apache
注意:PHP 7.2+ 已移除 mcrypt,改用 OpenSSL/Sodium,舊項目遷移時需重構加密邏輯。

8. Apache Rewrite 模塊啟用

解決:在 httpd.conf 中找到 #LoadModule rewrite_module modules/mod_rewrite.so,**刪除行首 #**,重啟 Apache。

9. 修改 httpd.conf 必須重啟 Apache 生效

鐵律:任何修改 httpd.conf、php.ini、my.ini 後,**必須重啟對應服務** (Apache/MySQL) 配置才生效。.htaccess 除外 (運行時讀取)。

總結:舊環境維護三板斧

  1. DLL 進 System32 — 解決 80% 模塊加載失敗
  2. PHPIniDir 顯式指定 — 解決 90% php.ini 不生效
  3. AllowOverride All + DocumentRoot 權限 — 解決 95% .htaccess/403 問題

Windows 2003 + Apache + PHP 5.2 是一代經典組合的謝幕之作。維護它時,請帶著敬畏之心——那些年我們踩過的坑,就是今天穩定運行的基石。

Copyright © Windows教程網 All Rights Reserved