資訊無涯,回頭已不見岸

快速在Windows Server 2008 R2的IIS 7.5安裝設定PHP

還記得之前寫如何在Server 2008的IIS7安裝PHP是 2008 年底的事情,轉眼間已經來到 2011 年的年中,當時寫的東西其實已經不太適用現在的環境,所以這次直接用主流的 Windows Server 2008 R2 來個安裝心得分享。

1). 同樣到 PHP 官網下載適用於 Windows 的 PHP 軟體。
撰寫本文時的 PHPH 版本是 5.3.6,且選擇 VC9 x86 Thread Safe 的 Zip 版本。會選擇 Zip 版本的原因純粹是小弟自使用 PHP 以來,一直都是習慣手動設定,也沒玩過 Installer 版本。至於跟 Non Thread Safe 版本差在哪裡,有興趣的人可以上網搜尋一下,因為懶所以就不在這裡說明了。另外,也不用特別找出 x64 版本來跑(我已經幹過這蠢事了),因為 x86 版本就可以正常使用啦。

2). 將下載的檔案解壓縮到自訂目錄。
範例是放在「C:\php」。依照過去習慣,本來會先設定php.ini,但在這先不做處理,因為有些狀況會在文後說明。

3) 請務必到微軟網站下載及安裝 Microsoft Visual C++ 2008 SP1 可轉散發套件 x86 版
不信邪的可以只安裝 x64 版或者 Visual C++ 2010,保證只會吐文後的錯誤訊息。

4) 新增 IIS 角色。
功能服務除預設外,請再勾選「CGI」。不需選擇 ISAPI 的主要原因,在於 PHP 官方從 5.3 之後放棄了 ISAPI ,而且微軟官方也是採 FastCGI 模式執行 PHP。

5) 新增設定 IIS 上的 PHP 功能。
這部份可以選擇從伺服器端或站台端做設定,從伺服器端好處是之後所建的每個站台都自動套用了 PHP 設定。本範例是以站台為主,純粹有關小弟的龜毛偏好問題,不喜歡所有站台套通用設定。請從伺服器管理工具找到 IIS 管理員,選擇欲設定的站台點擊「處理常式對應」,在處理常式對應的頁面,用滑鼠右鍵或頁面右邊的動作窗格選擇「新增模組對應」。

6) 設定 PHP 的模組對應。
請參考下圖做設定:
a. 要求路徑必為「*.php」
b. 模組請務必選擇「FastCgiModule」
c. 執行檔請選擇 php 目錄中的「php-cgi.exe」
d. 名稱看你開心怎麼建都可以

設定完按確定後,會出現下面視窗,按「是」就對了。

檢查是否已啟用 PHP。

7) 設定起始預設文件。(選用步驟!?)
正常來說,如果會使用 PHP 的網站,大多會有預設 index.php 文件做起始,請參考下面截圖設定。另外,預設文件的先後順序也請依需求做調整。

8) 測試 PHP 是否可用。
用檔案總管到 IIS 站台存放檔案的目錄,新增一個「index.php」或「phpinfo.php」,再打開筆記本編輯該檔案,填入「<?php phpInfo(); ?>」並存檔。

接著按下圖步驟,開啟該網頁看有無顯示如最上圖的資訊畫面。

最後,來看一些可能會遇到的狀況。(這才是 IT 人的血淚,因為魔鬼都藏在這裡)

如果打開 php 網頁卻吐出 HTTP 500,錯誤碼為「0x800736b1」,請檢查是否確實安裝了 Microsoft Visual C++ 2008 SP1 可轉散發套件,而且是 x86 版。

雖然在沒有建立 php.ini 的情況下,已經可以讓 IIS 顯示 PHP 資訊頁面,但是正常來說,一定都會自行建立及編輯 php.ini 的內容,以符合實際需求。

但是建立了 php.ini 設定檔,卻沒有指定「date.timezone」的值,就會在瀏覽 php 頁面時,不管怎樣都只會吐「HTTP 500 內部伺服器發生錯誤」的訊息。

這個狀況其實在執行 phpinfo 時,就已經明確說明在該頁面裡。

解決方法很簡單,只要到 php.ini 裡將

;date.timezone=

去掉「;」符號以啟用該參數,並改成你所在的時區即可

date.timezone= "Asia/Taipei" 

最後,請依照微軟官方文件修改 php.ini:
a. 去掉「;」符號啟用及編輯下列參數

fastcgi.impersonate = 1
cgi.fix_pathinfo= 1
cgi.force_redirect = 0

b. 指定 open_basedir 的位置。(官方文件指的是網頁目錄的所在位置,實際作用不清楚,因為我沒設定)
c. 指定 extension_dir 的位置,也就是你的延伸模組位置,一般都會是

extension_dir = "./ext"

d. 啟用需要的延伸模組

以上,打完收工。再看了看自己的文章,似乎設定起來也不是這麼快速,但小弟真的覺得比之前的版本簡單許多了。

推薦延伸閱讀:
IIS Team - Using FastCGI to Host PHP Applications on IIS 7
IIS Team - PHP on IIS7

8 則留言

  1. nick

    很讚的分享!

  2. 820005

    感謝

  3. Geena

    感謝 前輩指點 , 不須多走冤枉路 !

    Geena

  4. DN

    我的是英文版,不知道什麼是 "處理常式對應"

    • 湾ちゃん

      "處理常式對應"="Handler Mappings"

  5. DN

    很好很實用,但我安裝完後發現在 PHP 的html FORM 內不可以用 POST,請問怎樣解決?

  6. DN

    原來是可以用 html FORM 的 POST, 是因為 web.config 先前設定的問題,請不用理會我先前的問題

  7. MONK

    站長您好,我的環境是WIN7(WindowsUpdate全裝)+IIS7.5+PHP5.5.6,跟隨您的教學文章,但沒有安裝另外在去安裝VirtualStudio就能跑phpinfo,不知道是不是WindowsUpdate的時候就已經裝上。

    另外也沒有遇到錯誤訊息和設定時區的問題,不知道是不是新版的PHP和IIS有修附相關問題XD。

發佈回覆給「DN」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

© 2024 蘇老碎碎唸

Theme by Anders NorenUp ↑