Apache 2 與 PHP 4 是早期構建動態網站的經典組合,成本低、社群資源豐富。但在 Windows 上讓兩者完美協作,官方文件常遺漏關鍵細節,網路教學更充滿錯誤範例(甚至建議替換 DLL)。本文整理出經實測可行的標準流程,助您一次成功、避開坑點。
.msi 安裝版(二進制發行包),除非您需深度客製化編譯選項,否則勿自行編譯源碼。.zip 完整套件(含 php4apache2.dll),而非僅含 CGI 執行檔的 .msi 精簡版。apache_2.x.x-win32-x86-no_ssl.msi,依嚮導操作:
localhostC:\Program Files\Apache Group 改為 C:\Apache 或符合 8.3 格式的短路徑,避免日後路徑含空白需加引號的麻煩。https://localhost/ 應見到 Apache 預設首頁。可刪除 htdocs 內範例檔,放入自訂 index.html。將 C:\Php\Dlls\*.dll 複製到 %windir%\System\(或 System32)
httpd.conf(位於 C:\Apache\Apache2\Conf\)DirectoryIndex,修改為:DirectoryIndex index.html index.html.var index.phpAllowOverride None,改為 AllowOverride All(允許 .htaccess)AddType 區塊新增:AddType application/x-httpd-php .phpLoadModule 區塊新增(採用模組模式,效能優於 CGI):LoadModule php4_module "c:/php/php4apache2.dll"php.iniC:\Php\php.ini-recommended 複製到 %windir%\php.inidoc_root = c:\apache\apache2\htdocsextension_dir = c:\php\extensionssession.save_path = c:/temp(需手動建立 C:\temp 目錄)cd C:\Apache\Apache2\bin
apache -k start # 首次啟動
apache -k restart # 重新載入設定
若報錯 Cannot load php4apache2.dll,請檢查 DLL 路徑、檔案是否存在、PHP 版本是否為 Thread Safe 版。
在 htdocs 建立 phptest.php:
<?php phpinfo(); ?>
訪問 https://localhost/phptest.php,應顯示 PHP 資訊頁。注意 Server API 應為 Apache 2.0 Handler(模組模式),而非 CGI。
| 現象 | 可能原因 | 解決方向 |
|---|---|---|
| Apache 啟動即閃退 | php4ts.dll 未放入 System 目錄 | 複製 php4ts.dll 至 %windir%\System |
| PHP 頁面顯示原始碼 | AddType / LoadModule 設定遺漏 | 檢查 httpd.conf 大小寫、路徑正確性 |
| 無法載入 MySQL 擴充 | extension_dir 錯誤或 libmysql.dll 缺失 | 確認 extension_dir、將 libmysql.dll 放入 System 目錄 |
| 事件檢視器出現錯誤但命令列無輸出 | Apache 以服務模式啟動 | 改用命令列 apache -k start 除錯 |
雖然 Apache 2 + PHP 4 已屬歷史版本,但其安裝邏輯——核心設定集中於 httpd.conf、模組化載入 PHP、路徑規範化、命令列優先除錯——在現代 Apache 2.4 / PHP 8 環境依然通用。掌握這套「權威流程」,不僅能快速重現經典環境,更能建立扎實的伺服器運維直覺。