PHP 5.3 起移除 ISAPI 模塊 (php5isapi.dll),在 IIS 6.0 (Windows Server 2003) 上運行高版本 PHP,必須安裝 Microsoft FastCGI Extension 並配置 php-cgi.exe。本文提供從下載到驗證的完整步驟。
php-5.3.1-nts-Win32-VC6-x86.zip (官方推薦 IIS 用 NTS)fcgiext.msi (或 fcgix64.msi)。C:\PHP (路徑無空格、中文)。php.ini-production 為 php.ini。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
創建 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:進程回收前處理請求數 (防內存洩漏).php 映射到 C:\WINDOWS\system32\inetsrv\fcgiext.dll (FastCGI 模塊)。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))) {
https://localhost/phpinfo.php,確認 Server API: CGI/FastCGI。php.ini 權限、cgi.force_redirect=0、FastCGI 進程數設置。cgi.fix_pathinfo=1、IIS 腳本映射「檢查文件是否存在」取消勾選。maxInstances 根據 CPU 核心數設置 (通常 2-4 倍),啟用 opcache (PHP 5.5+) 或 WinCache。Windows Server 2003 / IIS 6.0 已停止主流支持 (2015 年)。強烈建議: