IIS6+PHP5 (FastCGI) 安裝攻略

九月 30th, 2008

以往 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

6. 開啟 IIS 管理員,如下圖設定。

7. 增加預設首頁 index.php

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」執行,所以如果安裝上發生問題,請特別注意這個權限配置。

相關文章:

PHP, Server, Windows, 系統筆記 , , ,

  1. peterson
    十一月 10th, 2008 at 14:13 | #1

    依照您的IIS6+PHP5 (FastCGI) 安裝攻略(系統win2003)
    到第9步驟都非常順利
    可是第10項展示網頁卻出現FastCGI Error
    是否第4步驟要設成everyone
    或者第6步驟的主目錄之執行權限要設成"指令碼及執行檔"
    煩請指導
    在此也感謝您分享這麼好的資訊

  2. peterson
    十一月 10th, 2008 at 14:15 | #2

    承上個問題
    還是必須安裝mysql才可以顯示網頁

  3. 十一月 10th, 2008 at 22:02 | #3

    peterson:
    這些步驟已經在多台主機測試很多次,應該沒問題才對,不用先安裝 MySQL。
    另外並不建議在正式主機開放 everyone 權限,
    因為容易造成安全性問題,
    謝謝。

  4. tiebob
    二月 21st, 2009 at 12:07 | #4

    Ya!! 成功!
    感謝分享這麼棒的資訊!

    不知格主有沒有試過同時 IIS 上跑 FastCGI + isapi 模式呢?

  5. JJLIN
    五月 15th, 2009 at 17:19 | #5

    我先試過你的ISAPI 非常成功 可以跑PHP
    可是我一步一步照著Fast CGI重頭作一遍
    可是第10項展示網頁卻出現FastCGI Error= =

  6. Jeff
    九月 23rd, 2009 at 11:39 | #6

    請問一下我在第九個步驟輸入後會出現 
    輸入錯誤: 副檔名".js" 沒有對應的 Script 引擎。
    不知道這個問題要怎麼解決 謝謝。 

  7. 九月 23rd, 2009 at 12:36 | #7

    @Jeff
    請問是什麼系統呢?
    可以先確認是否有系統管理員權限,
    然後檢查 cscript 指令是否可正常運作。

  8. Jeff
    九月 23rd, 2009 at 14:41 | #8

    我是用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

  9. saja
    十月 2nd, 2009 at 12:15 | #9

    我參照ISAPI的方是用APPSERV裝MYSQL 則不成功呢
    如果使用這種fastCGI的方式裝上了PHP
    則要如何裝上MYSQL也可使用PhpMyAdmin呢

  1. 十二月 21st, 2008 at 09:26 | #1
  2. 四月 5th, 2009 at 19:11 | #2