雷電HTTPD Web Server預設是以ISAPI方式執行PHP的程式,那是否有方式能夠透過CGI的方式執行呢? 答案是有的,但為什麼要透過CGI方式執行呢? ISAPI不是比較強比較快嗎?那又何必須要CGI呢?
這個問題我們目前想到了兩種答案,提供一點心得。
可能性一:同時想要執行PHP4及PHP5,基本上ISAPI或者是APACHE MODULE版本的PHP,他的PHP.INI都是放置於WINDOWS的系統目錄當中,而PHP5與PHP4的PHP.INI又不盡相同,基本上就否定了同時執行兩套版本之PHP ISAPI的可能性,但若又有同時要跑PHP4與PHP5的需求,即可將ISAPI的PHP跑PHP5而CGI的PHP跑PHP4來達成,因為CGI版本的PHP讀取的是與PHP.EXE相同目錄中的PHP.INI,自然不與ISAPI版本相衝突。
可能性二:規避PHP ISAPI的當機狀況,誰說PHP是完美的? 沒有錯,PHP也會當機,而且由於ISAPI版本的PHP DLL檔案載入記憶體後就不會被卸載,除非系統重新啟動,因此當PHP ISAPI子系統發生當機時,便會造成Web Server無法繼續提供PHP解譯的機能。然而CGI版本的PHP.EXE乃獨立於伺服器程式行程(Process)之外的獨立程式,雖然啟動所花的時間較長,但若當機也是該行程自己當掉而已,並不會影響到其他的PHP執行。
設定方式:
首先我們假設您預設安裝為PHP5 ISAPI版本的雷電HTTPD,因此我們要嘗試將PHP4版本的PHP也安裝為CGI的方式執行,並且對映到 *.php4 的副檔名。
於工作列滑鼠右鍵點選雷電HTTPD圖示,選設定...後進入設定畫面: 這邊可以看到 php isapi dll 使用為 php5isapi.dll 表示目前 php 執行的是 PHP4 ISAPU 版本。
點選虛擬主機編輯器: 首先假設你已經把 PHP4 解壓縮到 c:\php 的目錄當中,並且正確的設定了 c:\php\php.ini,這邊我們啟用CGI2處理器,並且將其處理器路徑設為 c:/php/php.exe,注意下面 CGI文件2 要將 .php4 加入,這樣子在瀏覽器存取帶有 *.php4 附檔名的 URL 時,PHP4的CGI處理器就會被利用到。
|