其實我很早前就想寫這篇了,最近很久沒有發佈新文章,趁稍有空閒的時候寫一寫,在我過去,開發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 做溝通 ,因此以下就用最簡單的方式來介紹如何安裝。
安裝前準備
- 下載 Apache Win32 版本及 mod_fcgid ,截至今日為止,Apache 官方只提供 Apache 2.2.x 版本的 binary 檔,可由官方 http://ftp.mirror.tw/pub/apache//httpd/binaries/win32/ 去找,mod_fcgid 也有在裡頭。
- 下載 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
安裝步驟
- 把 PHP 的 zip 檔直接解開,就放到 C:\PHP , 就這麼簡單,甚麼都不用幹了。
- 執行 httpd 那個 msi 檔案,安裝完畢後先不管它,若安裝過程中沒有指定安裝路徑,應該會安裝到 C:\Programe Files 下的 Apache。
- 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
請問一下[壞蛋的密室],這個模組xcache要如何安裝!!!我都安裝失敗/ \”..我還是不能理解官方的[http://xcache.lighttpd.net/wiki/InstallFromBinary]的說明!!!!!!能大概講一下嗎?><"抱歉!!!
要不要改用 PHP 5.5 有內建 OP Cache 了