Windows 上 PHP + Apache mod_fcgid 安裝法

其實我很早前就想寫這篇了,最近很久沒有發佈新文章,趁稍有空閒的時候寫一寫,在我過去,開發PHP專案,也是習慣在 Windows 上開發然後再拿去 Linux 運作,若要在 Windows 上開發,可能很多人都直接用非官方整合的 PHP 的安裝套件,因為省事嘛 ….

但我自己還是習慣自己動手裝 Apache 和 PHP,而在 Windows 上安裝 Apache + PHP,會有兩種運作模式,PHP 在 Windows 上和Linux同樣可以有 Non Thread Safe 和 Thread Safe 兩種版本可用,當然我會建議用 Non Thread Safe,因為這真的比較穩定,而若要用 None Thread Safe 模式運作,就必須讓 Apache 具備 Fast CGI 功能和 PHP 做溝通 ,因此以下就用最簡單的方式來介紹如何安裝。

安裝前準備

  1. 下載 Apache Win32 版本及 mod_fcgid ,截至今日為止,Apache 官方只提供 Apache 2.2.x 版本的 binary 檔,可由官方 http://ftp.mirror.tw/pub/apache//httpd/binaries/win32/ 去找,mod_fcgid 也有在裡頭。
  2. 下載 PHP non thread safe 版本,可由官方 win32 的下載點 http://windows.php.net/download 找尋。

下載完之後,若以今日文章日期而言,會有以下三個檔案

  • php-5.4.11-nts-Win32-VC9-x86.zip
  • httpd-2.2.22-win32-x86-no_ssl.msi
  • mod_fcgid-2.3.6-win32-x86.zip

安裝步驟

  1. 把 PHP 的 zip 檔直接解開,就放到 C:\PHP , 就這麼簡單,甚麼都不用幹了。
  2. 執行 httpd 那個 msi 檔案,安裝完畢後先不管它,若安裝過程中沒有指定安裝路徑,應該會安裝到 C:\Programe Files 下的 Apache。
  3. mod_fcgid 那個 zip 檔解壓縮,然後裡頭有個 modules 文件夾,裡面有個 mod_fcgid.so,將這個 mod_fcgid.so 複製到 Apache 安裝目錄的 modules 文件夾下。

最後的設定

現在就差最後幾個步驟了,現在主要是要設定讓 Apache 可以支援 Fast CGI 及如何讓 mod_fcgid 這個模組可以和 PHP 做溝通。以下先介紹如何修改 httpd.conf , Apache 設定檔,就在 Apache安裝目錄/Httpd/conf/httpd.conf。

第一. 新增下面幾行是 Apache 和 PHP 溝通的方法

LoadModule fcgid_module modules/mod_fcgid.so  
# 設定可以接受 Request 長度,預設只能收 128K 太少了
FcgidMaxRequestLen 40000000

# 設定 FCGI 會初始化一個環境變數叫 PHPRC , 這樣 PHP 就會讀取以下目錄下的 php.ini 設定檔
FcgidInitialEnv PHPRC        "c:/php" 

# 設定 mod_fcgid 和 PHP

AddHandler fcgid-script .php  

FcgidWrapper "c:/php/php-cgi.exe" .php

這有一行是 FcgidMaxRequestLen 若不指定則預設為 139072 ,這個參數會影響到用戶端送來的最大長度資料,例如要上傳的檔案經編碼後若超過 139072 則會報HTTP 500錯誤,因此我這裡加大到40M, 這樣操作  phpmyadmin 的時候可能要匯入匯出時至少這裡不會出錯。

第二,修改預設的網頁路徑權限

先找到一行<Directory “C:/Program Files/Apache/Httpd/htdocs”>,在這個區段中,會有個     AllowOverride None 的設定,改成如下

AllowOverride All

再找到一行 Options Indexes FollowSymLinks 新增 +ExecCGI 如下,主要是為了讓網頁目錄可以有執行 CGI 的權限,FastCGI 也屬於 CGI 的一種

Options Indexes FollowSymLinks +ExecCGI

第三,修改一下 httpd.conf 中 DirectoryIndex 的設定,預設應該是 DirectoryIndex index.html , 修改成 index.php 為預設的,如下

DirectoryIndex index.php index.html
然後上述 Apache 的設定大致完畢,先不要重新啟動,因為剛剛安裝的 PHP zip 版本,其中 php.ini 是沒有的,可以在 C:\PHP 下發現 php.ini-development 及 php.ini-production 兩個檔案,這是 PHP  官方幫我們預設先弄好兩種環境做為開發或產品用的設定檔,開發用的設定檔已經把所有 error 都打開,以方便除錯,所以我們就把 php.ini-development 改名或複製為 php.ini 即可
這時候,可以重啟 Apache 了,可以寫個 phpinfo() 放到 Apache 網頁根目錄 C:/Program Files/Apache/Httpd/htdocs 進行測試就知道有無成功了。
最後,我建議可以加裝 xcache 這個模組,這類似 PHP 上的 APC 可以加速 PHP 運作,因為 apc win32 似乎找的到的版本都很不穩定,xcache 則比較少問題,各位可以到 http://xcache.lighttpd.net/ 參考看看。

2 則評論在 Windows 上 PHP + Apache mod_fcgid 安裝法.

  1. 請問一下[壞蛋的密室],這個模組xcache要如何安裝!!!我都安裝失敗/ \”..我還是不能理解官方的[http://xcache.lighttpd.net/wiki/InstallFromBinary]的說明!!!!!!能大概講一下嗎?><"抱歉!!!

發佈留言