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

PHP 5.3.1 在 IIS 6.0 上部署指南:FastCGI 替代 ISAPI 的完整配置步驟

     編輯:PHP 綜合知識

PHP 5.3+ 棄用 ISAPI,IIS 6 必須用 FastCGI:微軟官方擴展完整配置教程

PHP 5.3 起移除 ISAPI 模塊 (php5isapi.dll),在 IIS 6.0 (Windows Server 2003) 上運行高版本 PHP,必須安裝 Microsoft FastCGI Extension 並配置 php-cgi.exe。本文提供從下載到驗證的完整步驟。

前置條件

  • Windows Server 2003 SP2 / Windows XP Pro SP3 (IIS 6.0)
  • PHP 5.3.1 Non-Thread-Safe (NTS) 版本:php-5.3.1-nts-Win32-VC6-x86.zip (官方推薦 IIS 用 NTS)
  • Microsoft FastCGI Extension for IIS 5.1 and 6.0 (32位/64位對應)

步驟一:安裝 FastCGI Extension

  1. 下載並運行 fcgiext.msi (或 fcgix64.msi)。
  2. 安裝完成後,IIS 管理器中會出現「FastCGI」配置項 (IIS 6 無 GUI,需命令行配置)。

步驟二:部署 PHP NTS 版本

  1. 解壓 PHP NTS 包至 C:\PHP (路徑無空格、中文)。
  2. 複製 php.ini-production 為 php.ini。
  3. 編輯 php.ini 關鍵 CGI/FastCGI 參數:
[PHP]
; 必須設置
cgi.force_redirect = 0          ; IIS 必須關閉
cgi.fix_pathinfo = 1            ; 支持 PATH_INFO
fastcgi.impersonate = 1         ; 模擬調用用戶令牌 (IIS 安全需求)
fastcgi.logging = 0             ; 關閉 FastCGI 日志 (避免干擾 stdout)
cgi.rfc2616_headers = 1         ; 使用 RFC 2616 標準頭

; 擴展目錄
extension_dir = "C:\PHP\ext"
; 啟用常用擴展
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_gd2.dll
extension=php_mbstring.dll
; 時區
date.timezone = Asia/Shanghai

步驟三:註冊 FastCGI 應用 (批處理腳本)

創建 setup_fcgi.bat:

@echo off
set PHP_PATH=C:\PHP\php-cgi.exe
set FCGI_CONFIG=%windir%\system32\inetsrv\fcgiconfig.js

cscript //nologo %FCGI_CONFIG% -add -section:"PHP" ^
-extension:php -path:"%PHP_PATH%" ^
-maxInstances:10 ^
-instanceMaxRequests:10000 ^
-activityTimeout:70 ^
-requestTimeout:90 ^
-idleTimeout:60 ^
-queueLength:1000

echo FastCGI PHP 配置完成。
pause

以管理員身份運行。關鍵參數:

  • -extension:php:映射 .php 後綴
  • -path:php-cgi.exe 絕對路徑
  • -maxInstances:最大進程數 (Web Garden 效果)
  • -instanceMaxRequests:進程回收前處理請求數 (防內存洩漏)

步驟四:IIS 網站映射驗證

  1. IIS 管理器 → 網站 → 右鍵「屬性」→「主目錄」→「配置」→「映射」頁籤。
  2. 確認 .php 映射到 C:\WINDOWS\system32\inetsrv\fcgiext.dll (FastCGI 模塊)。
  3. 「文件」/「目錄」安全性 → 匿名訪問啟用,集成 Windows 驗證按需。

步驟五:phpMyAdmin 兼容性修復 (若使用 3.1.0rc+)

PHP 5.3 棄用 eregi(),phpMyAdmin 早期版本會報錯。編輯 libraries/select_lang.lib.php 第 147-148 行:

// 原代碼 (已棄用)
if (($envType == 1 && eregi('^(' . $expr . ')(;q=[0-9]\\.[0-9])?$', $str))
 || ($envType == 2 && eregi('(\(|\[|;[[:space:]])(' . $expr . ')(;|\]|\))', $str))) {

// 修改為 preg_match (注意正則分隔符與轉義)
if (($envType == 1 && preg_match('/^' . $expr . '(;q=[0-9]\\.[0-9])?$/i', $str))
 || ($envType == 2 && preg_match('/(\(|\[|;[[:space:]])' . $expr . '(;|\]|\))/i', $str))) {

驗證與排查

  1. 瀏覽器訪問 https://localhost/phpinfo.php,確認 Server API: CGI/FastCGI。
  2. 若報「Access Violation」:檢查 php.ini 權限、cgi.force_redirect=0、FastCGI 進程數設置。
  3. 若報「No input file specified」:檢查 cgi.fix_pathinfo=1、IIS 腳本映射「檢查文件是否存在」取消勾選。
  4. 性能調優:maxInstances 根據 CPU 核心數設置 (通常 2-4 倍),啟用 opcache (PHP 5.5+) 或 WinCache。

遷移建議

Windows Server 2003 / IIS 6.0 已停止主流支持 (2015 年)。強烈建議:

  • 升級至 Windows Server 2019/2022 + IIS 10 + PHP 8.1+ (NTS) + FastCGI 內置模塊。
  • 或遷移至 Linux + Nginx + PHP-FPM,獲得更優性能、安全性與生態支持。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved