在 Windows 7 上為 IIS 7.5 手動安裝 PHP

沒記錯的話,在 IIS6.0 的時代,PHP 有推出安裝檔,如果 Web Server 是 IIS 的話,在安裝過程會自動佈署到 IIS。

到了比較中期,PHP 就沒有推出安裝檔,而只有手動安裝檔。當時的手動安裝的方式是以 ISAPI 的方式將 PHP 佈署到 IIS 裡。

到了更後期,因為建議採用 Fast-CGI 的方式執行,所以也沒辦法以 ISAPI 的方式進行佈署。IIS 7.0 之後(也就是 Vista 之後),如果要讓 IIS 支援 PHP 也都採用 Fast-CGI 的方式進行佈署。當時,要讓 IIS 以 Fast-CGI 的方式執行 PHP,感覺很麻煩,特別是在 IIS 6.0 上。

Windows 7 內建的 IIS 7.5,其實安裝 PHP 的方式就已經比 IIS 6.0 簡單多了。雖然簡單許多,但有時久沒用,還是會忘記,就簡單做個筆記好了。

1. 下載和設定 PHP

  1. 先到 PHP For Windows 下載 Windows 版本的 PHP
    http://windows.php.net/download/
  2. PHP For Windows 有很多版本,看了實在令人頭暈,講一下幾個要點:
    • 在 IIS 上執行,請選擇『Non Thread Safe』的版本
    • x86 / x64,簡單來講就是 32 位元和 64 位元版本
      PHP 5 x64 版本,雖是 64 位元,但仍屬實驗性質,尚不支援 64 位元整數以及大檔案
      PHP 7 x64 版本,支援原生 64 位元整數、大檔案……等
    • PHP 5 是採用 Visual Studio 2012 (即 VC 11) 編譯
      PHP 7 則是採 Visual Studio 2015 (即 VC 14) 編輯
      電腦需安裝相對應的 Visual C++ 可轉發套件(Visual C++ Redistributable for Visual Studio),在 PHP For Windows 網頁左邊可以找到相關連結
  3. 如果是免安裝版,找不到 php.ini 這個檔案,但會找到「php.ini-development」和「php.ini-production」,將 php.ini-production 複製一份出來,並重新命名為 php.ini
  4. php.ini 有幾個地方要設定一下
    • extension_dir = "ext"
    • cgi.force_redirect = 0
    • cgi.fix_pathinfo=1
    • fastcgi.impersonate = 1
    • date.timezone = Asia/Taipei
    • extension=php_mbstring.dll
    • extension=php_mysql.dll
    • extension=php_mysqli.dll

2. 設定 IIS

  1. 因為 IIS 是以 Fast-CGI 的方式執行 PHP,所以要先將 Fast-CGI 的功能開啟,這要在「開啟或關閉 Windows 功能」(可以在「執行」中輸入「OptionalFeatures」開啟這個視窗)中將「CGI」功能開啟。
  2. 安裝完成後,開啟 IIS,在功能裡找到「處理常式對應」
  3. 再點右邊的「新增模組對應……」
    • 要求路徑,通常會設定「*.php」,也可以說所有副檔名為 php 的檔案,都用這個模組執行
    • 因為是用 Fast-CGI 執行,所以模組要選「FastCgiModule」,如果看不到這個模組,通常代表 IIS 的 CGI 功能沒有開啟
    • 執行檔則是指要用哪一個 dll 或 exe 做為 Fast-CGI 的執行,這裡通常是設定 PHP 的「php-cgi.exe」這支程式
    • 名稱則是自行命名,沒有特別限制
  4. 最後看到這個畫面,選「是」就好了
  5. 最後測試一下 PHP 看看能不能正常運作

Comments

  1. 不知道,是否將此文章複製貼上部分改為「特別標註是您的原文」,是否能消除您對此篇文章的看法。
    畢竟windows環境安裝上的文章非常講求SOP正確性,而站長您的文章寫的非常好,很難再有特別寫法。

    最後真的再一次說抱歉,非常抱歉。

    1. Hi, IT成長團

      先說明一點,你的有些留言,因內容涉及你個人隱私,雖是你自行發佈,但我仍覺不妥,所以這些留言,我可能會以「刪除」或「隱藏」的方式處理之。

      另外可不可以讓我知道『將此文章複製貼上部分改為「特別標註是您的原文」』的原因為何呢?

    2. 站長,第一還是向您道歉,真的很抱歉。

      至於『將此文章複製貼上部分改為「特別標註是您的原文」』<– 此目的是想取得您的授權,這邊要強調還是站長的意願最重要,畢竟是我們錯在先。

      我們是否可以另外發一篇完整文章在IT邦,完整敘述做錯的點,向您公開道歉。

      IT成長團都是常在網路上分享文章的邦友,但其實更應該注意站長您的權利,「不應該這樣沒取得同意在先」。

      假如取得同意授權外加保留原本文章樣貌,對於此次鐵人賽還有機會保持讓隊友可以獲取獎項。畢竟IT成長團其他團員都是花費不間斷三十天努力寫出文章,最後獲獎。

    3. Hi, IT 成長團

      可以先讓我知道為什麼我覺得是和兩個人在兩邊不同的網站討論著相同事情嗎?

    4. HI 站長
      是的
      這邊的留言是IT成長團跟小魚討論後的留言
      IT邦幫忙那邊是直接跟小魚私人討論

    5. Hi, IT成長團

      其實我個人有點不解的是,為什麼要這樣子區分。
      如我 Blog 的留言,是你們和小魚討論之後的結果,然後代發或什麼的。
      而不是小魚本人在這裡討論或留言。
      但在邦幫忙那裡,卻又是和小魚私訊。

      一來,IT 成長團與此事件無直接關係。
      二來,事件因小魚而起,處理、討論……等,也似乎應該是與小魚進行,才會是較正確的吧?

  2. 雖然原文有最後寫上參考資料來源
    但後半部內容確實都是「複製貼上」,也沒有特別標註此部分是完全引用,並且也「沒有跟站長您取得同意」,真的非常抱歉。

    1. Hi, IT 成長團

      這則留言,我已做了些修改,讓圖片可直接顯示,特此告知。

發佈留言

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

這個網站採用 Google reCAPTCHA 保護機制,這項服務遵循 Google 隱私權政策服務條款