PHP 官網提供四種 Windows 版本組合,初學者常感困惑。本文以官方說明為依據,透過 Web 伺服器(Apache/IIS)與執行模式(ISAPI/FastCGI)兩個維度,教你精準選擇正確版本。
版本矩陣速查表
| Web 伺服器 | 執行模式 | 推薦版本 | 說明 |
| Apache | 模組模式 (mod_php) | VC6 Thread Safe | Apache 官方編譯使用 VC6,需線程安全 |
| Apache | FastCGI (mod_fcgid) | VC6 Non Thread Safe | FastCGI 單線程,不需線程安全,效能更好 |
| IIS 6/7+ | ISAPI | VC9 Thread Safe | IIS 原生 ISAPI 需 VC9 編譯且線程安全 |
| IIS 7+ | FastCGI | VC9 Non Thread Safe | FastCGI 單線程,VC9 編譯,效能最佳 |
核心概念解析
VC6 vs VC9(編譯器差異)
- VC6:Visual Studio 6 編譯,相容 Apache(官方 Apache for Windows 亦用 VC6 編譯)。
- VC9:Visual Studio 2008 編譯,相容 IIS(Windows 原生環境)。
Thread Safe (TS) vs Non Thread Safe (NTS)
- Thread Safe:啟用線程安全檢查,適合多線程環境(Apache mod_php、IIS ISAPI)。請求間共享進程記憶體,需防止資料競爭。
- Non Thread Safe:停用線程安全檢查,適合單線程環境(FastCGI、CLI)。無線程切換開銷,執行效率更高。
執行模式對照
| 模式 | 特性 | 需 TS? |
| ISAPI | DLL 常駐記憶體,多線程處理請求 | 是 |
| FastCGI | 獨立進程池,單線程處理,進程間隔離 | 否 |
| CLI | 命令列單執行緒 | 否 |
實務選擇建議
- 確認 Web 伺服器:Apache → VC6;IIS → VC9。
- 確認執行模式:
- Apache +
LoadModule php5_module → Thread Safe。
- Apache +
mod_fcgid/mod_proxy_fcgi → Non Thread Safe。
- IIS + ISAPI → Thread Safe。
- IIS + FastCGI(預設推薦) → Non Thread Safe。
- 下載 ZIP 版(非 MSI),手動配置
php.ini、環境變數,便於版本控制與多版共存。
常見誤區
- ❌ 「PHP 5.3 都用 Non Thread Safe」→ 錯誤,視執行模式而定。
- ❌ 「VC9 比 VC6 新/快」→ 錯誤,針對不同 Web 伺服器編譯,不可混用。
- ❌ 「Thread Safe 比較安全」→ 命名易誤導,實為「多線程環境下的資料安全」,單線程環境反而拖慢效能。
驗證方式
php -i | findstr "Thread Safety"
# Thread Safety => enabled = TS
# Thread Safety => disabled = NTS
php -i | findstr "Compiler"
# Compiler => MSVC6 (Visual C++ 6.0) = VC6
# Compiler => MSVC9 (Visual C++ 2008) = VC9