本來不打算寫這份心得的,這幾天為了安裝wordpress,得升級一下PHP的版本,于是乎去下了個PHP5.3.8,之前不知道5.3x跟5.2x有那么大的差距,按照老方法安裝了一遍,木有作用。到網上找了很多傳說中的高手寫的文章,前前后后重裝了10幾次才折騰成功!廢話就不說了,來點實際的。
我只說IIS 6 + PHP5.3 ,Apache那玩意還木有研究過。
1.下載一個FastCgi For IIS6 ,到這里去下載,http://www.iis.net/expand/fastcgi
反正我下載到的文件是這樣的,應該都差不多,如下圖

下載完畢之后就安裝,安裝成功后會在C:\WINDOWS\system32\inetsrv\目錄下搞出了5個文件,如下圖

這個時候在IIS 6的“WEB服務擴展”里就多出了一個FastCGI Handler

2.去下載一個php-5.3.8-nts-Win32-VC9-x86.zip(不好意思,這個我忘記是在哪里下載了),然后解壓到D:\PHP目錄(可以解壓到任意目錄,這里就按照我自己的習慣來講吧),并給IIS啟動帳戶或用戶賦予讀取和運行權限。
接著將D:\PHP目錄下的所有.dll復制到C:\WINDOWS\system32下,如果有提示覆蓋的,就全部覆蓋吧。注:網上很多人的文章里都沒寫這一點,不知道是他們太高估了我的智商還是他們給忘記了,這點蠻重要。
到命令行可以輸入COPY D:\PHP\*.dll C:\WINDOWS\system32\ ,省得找的麻煩。
3.注冊PHP 到 FastCGI
打開 C:\WINDOWS\system32\inetsrv\fcgiext.ini文件
在[Types]下面添加以下配置(網上大部分人都說了行號,讓你到哪一行附近去找,這是個誤區,直接到這個文件的末尾就是,前面是沒有分號的)
[Types]
php=PHP
[PHP]
ExePath=D:\PHP\php-cgi.exe
如下圖所示

接下來就是修改php.ini配置文件了,D:\PHP目錄下是找不到這個文件的,可以把php.ini-development復制一份,然后重命名為php.ini
打開php.ini后Ctrl+F查找
extension_dir = "./" , 把這個修改成extension_dir = "D:/PHP"
在D:下建立文件夾,并命名為tmp
查找;upload_tmp_dir =
將;upload_tmp_dir = 最前面的";"去掉
upload_tmp_dir是用來定義上傳文件存放的臨時路徑,這里可以修改并給它定義一個絕對路徑,同時需要有讀、寫權限。
這里我的設置為upload_tmp_dir = "D:/tmp" (這就是我前面建立的文件夾)
找到 ;fastcgi.impersonate = 1 ,記得把前面的";"去掉
找到 ;short_open_tag = Off ,把前面的";"去掉,并把"Off"改成"On"
搜索Windows Extensions,將以下這些常用擴展前面的分號去掉
; extension=php_curl.dll
; extension=php_gd2.dll
; extension=php_ldap.dll
; extension=php_mbstring.dll
; extension=php_exif.dll
; extension=php_mysql.dll
; extension=php_mysqli.dll
; extension=php_sockets.dll
; extension=php_xmlrpc.dll

繼續!
搜索;date.timezone =
去掉前面的分號,將其設置為 date.timezone = Asia/Shanghai
傳說還可以設置為PRC,這個我沒試過,大家有興趣,愛折騰的可以去試一下。
如果不修改date.timezone,打開網頁的時候蠻有可能提示500錯誤
---------------------------------------------------------------------
需要說明一下的是把D:\PHP下的php.ini文件copy到C:\WINDOWS下,然后再把D:\PHP下的php.ini刪除掉(我沒刪除,而是改了個后綴收藏起來了)
4.配置網站
打開IIS 6管理器,在"網站"上點右鍵-->屬性-->主目錄-->配置-->添加,,操作方式就不詳寫了,繼續上圖



可執行文件路徑是: C:\WINDOWS\system32\inetsrv\fcgiext.dll
運行D:\PHP\php-cgi.exe,如果能進入命令窗口并且只有光標,說明FastCGI能正常調用php-cgi,否則會提示錯誤,如圖

OK,基本上就這些了,把IIS重啟一下,命令行輸入IISRESET,傳說這個步驟很重要!!!
這時候可以找個php文件測試一下,常用的最簡單的方式就是
看到類似以下效果就說明成功了