PHP 5.3 Windows 官方提供四種二進制封裝:
本文詳細解析編譯器版本(VC6/VC9)與執行緒安全性(TS/NTS)的差異、選擇原則與搭配建議。
| 項目 | VC6 (Visual Studio 6) | VC9 (Visual Studio 2008) |
|---|---|---|
| 發布年份 | 1998 | 2008 |
| 適用 Web 伺服器 | Apache (官方 Windows 版 Apache 以 VC6 編譯) | IIS (FastCGI/ISAPI) |
| 相容性 | 舊版擴充套件多為 VC6 | 現代擴充套件、PHP 5.3+ 官方推薦 |
| 效能 | 基準 | 優化較好、記憶體管理改進 |
選擇原則:用 Apache 選 VC6,用 IIS 選 VC9。混用會導致 Apache 無法載入 PHP 模組或 IIS FastCGI 崩潰。
| 執行模式 | 架構 | 建議版本 | 理由 |
|---|---|---|---|
| Apache mod_php (ISAPI) | 多執行緒,單進程 | Thread Safe | 共享進程空間,需執行緒安全保護 |
| IIS ISAPI | 多執行緒 | Thread Safe | 同理 |
| FastCGI (IIS/Nginx) | 多進程,單執行緒/進程 | Non Thread Safe | 進程隔離,無執行緒競爭,NTS 效能更好 |
| CLI | 單執行緒 | Non Thread Safe | 無執行緒需求 |
| 誤區 | 正確認知 |
|---|---|
| 「VC9 比 VC6 新,所以都用 VC9」 | Apache 官方二進制仍為 VC6 編譯,強行用 VC9 會導致模組載入失敗 |
| 「Thread Safe 比較安全,所以都用 TS」 | FastCGI 環境用 TS 會帶來不必要的鎖開銷,降低效能 |
| 「Non Thread Safe 不安全」 | NTS 在單執行緒模型下完全安全,且效能更優 |
| 「下載 MSI 就對了」 | MSI 預設可能安裝不需的擴充套件,生產環境建議 ZIP 手動部署 |
<?php phpinfo(); // 搜尋: // Compiler => MSVC9 (Visual C++ 2008) 或 MSVC6 // Thread Safety => enabled (TS) / disabled (NTS)
PHP Windows 版本選擇的核心邏輯:
記住這三條,即可在官方下載頁面秒速鎖定正確套件,避免環境不相容導致的白畫面、崩潰、效能低落等疑難雜症。