IIS6+PHP5 (FastCGI) 安裝攻略
以往 PHP 的執行模式可分成 CGI 及 ISAPI 兩種,CGI 的 performance 是出名的慢,而 ISAPI 是較多人使用的,但是在 Windows 卻穩定性不佳,經常會導致整個 web server crash,所以微軟特別針對 IIS 開發了 FastCGI 模組(IIS7 已內建),據說效能及穩定性都有大大改善。
安裝步驟:
1. 確認 IIS 已經裝好,然後下載 FastCGI Extension for IIS 6 並且安裝完成。
2. 到 PHP 官網下載新版 PHP5 壓縮檔,並且解壓縮(假設在 C:\PHP5)。
3. 將 C:\PHP5\php.ini-dist 改名為 php.ini,然後依需求編輯設定檔內容,範例:
(後三行必要)
include_path = ".;C:\Inetpub\wwwroot" extension_dir = "C:\PHP5\ext" extension=php_curl.dll extension=php_gd2.dll extension=php_mbstring.dll extension=php_mcrypt.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_openssl.dll extension=php_zip.dll date.timezone = "Asia/Taipei" cgi.force_redirect = 0 cgi.fix_pathinfo=1 fastcgi.impersonate = 1;
4. 對 C:\PHP5 目錄增加 IIS_WPG 群組的讀取及執行權限。
(沒加這個就會跑出 FastCGI Error)

5. 加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
Path=C:\PHP5;
PHPRC=C:\PHP5

8. 檢查網頁服務延伸。
(正常的話應該會有這一項,若沒有請自行加入 C:\WINDOWS\system32\inetsrv\fcgiext.dll)

9. 開始 > 執行 > cmd
輸入四道指令(注意路徑):
cd C:\WINDOWS\system32\inetsrv
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP5\php-cgi.exe"
cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000
(視情況修改數值,InstanceMaxRequests 需小於等於 PHP_FCGI_MAX_REQUESTS)
10. 重新啟動 IIS 就 OK 囉,丟一個測試檔案到網站目錄看看吧!

※2009/03/19 補充:
使用 FastCGI 執行 PHP 程式時,系統是以「NETWORK SERVICE」這個身份執行的,而一般靜態檔案則是以 IIS 預設的匿名身份「IUSR_MachineName」執行,所以如果安裝上發生問題,請特別注意這個權限配置。
相關文章:


依照您的IIS6+PHP5 (FastCGI) 安裝攻略(系統win2003)
到第9步驟都非常順利
可是第10項展示網頁卻出現FastCGI Error
是否第4步驟要設成everyone
或者第6步驟的主目錄之執行權限要設成"指令碼及執行檔"
煩請指導
在此也感謝您分享這麼好的資訊
承上個問題
還是必須安裝mysql才可以顯示網頁
peterson:
這些步驟已經在多台主機測試很多次,應該沒問題才對,不用先安裝 MySQL。
另外並不建議在正式主機開放 everyone 權限,
因為容易造成安全性問題,
謝謝。
Ya!! 成功!
感謝分享這麼棒的資訊!
不知格主有沒有試過同時 IIS 上跑 FastCGI + isapi 模式呢?
我先試過你的ISAPI 非常成功 可以跑PHP
可是我一步一步照著Fast CGI重頭作一遍
可是第10項展示網頁卻出現FastCGI Error= =
請問一下我在第九個步驟輸入後會出現
輸入錯誤: 副檔名".js" 沒有對應的 Script 引擎。
不知道這個問題要怎麼解決 謝謝。
@Jeff
請問是什麼系統呢?
可以先確認是否有系統管理員權限,
然後檢查 cscript 指令是否可正常運作。
我是用windows Server 2003 Enterprise Edition
我是用administrator的帳號登入的。
我直接執行cscript的指令是可以work的,會出現下列的選項
//B 批次模式: 不顯示 Script 錯誤和提示
//D 啟用主動式偵錯
//E:engine 使用該引擎來執行 Script
//H:CScript 改變預設的 Script Host 為 CScript.exe
//H:WScript 改變預設的 Script Host 為 WScript.exe (預設值)
//I 互動式模式 (預設值,與 //B 恰相反)
//Job:xxxx 執行一個 WSF 工作
//Logo 顯示標誌 (預設值)
//Nologo 不顯示標誌: 在執行階段不會出現標誌
//S 為使用者儲存目前的命令行
//T:nn 逾時值(單位為秒): 容許 Script 執行的最大時限
//X 在偵錯工具中執行 Script
//U 利用 Unicode 從主控台上重新引導 I/O
我參照ISAPI的方是用APPSERV裝MYSQL 則不成功呢
如果使用這種fastCGI的方式裝上了PHP
則要如何裝上MYSQL也可使用PhpMyAdmin呢