您可以在同一個 Apache 伺服器上運行多個版本的 PHP。我看過許多不同的解決方案,但大多數都需要安裝額外的 Apache 執行個體、重新導向埠/主機等,這對我來說並不滿意。
最後,我想出了迄今為止我見過的最簡單的解決方案,僅限於重新配置 Apache 的 httpd.conf。
我的目標是將 PHP5 作為我的 DocumentRoot(在我的例子中是 d:/htdocs)中 .php 檔案的預設腳本語言,並將 PHP4 用於指定的 DocumentRoot 子目錄。
以下是(Apache 的 httpd.conf 內容)
---------------------------
# 替換為您的 PHP4 目錄
ScriptAlias /php4/ "c:/usr/php4/"
# 替換為您的 PHP5 目錄
ScriptAlias /php5/ "c:/usr/php5/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php5/php-cgi.exe"
# 為每個包含 PHP4 程式碼的目錄填入此項
<Directory "d:/htdocs/some_subdir">
Action application/x-httpd-php "/php4/php.exe"
# 您的 PHP4 php.ini 檔案所在的目錄
SetEnv PHPRC "c:/usr/php4"
</Directory>
# 記得將此部分放在上面部分的下方
<Directory "d:/htdocs">
# 您的 PHP5 php.ini 檔案所在的目錄
SetEnv PHPRC "c:/usr/php5"
</Directory>
---------------------------
此解決方案不限於僅配置兩個並行版本的 PHP。您可以修改 httpd.conf 內容以配置任意數量的 PHP 版本。
您也可以為同一個 PHP 版本(但針對不同的 DocumentRoot 子資料夾)使用多個 php.ini 設定檔,這在某些情況下可能很有用。
請記住將您的 php.ini 檔案放在「SetEnv PHPRC...」行中指定的目錄中,並確保其他目錄(例如 Windows 中的 c:\windows)中沒有 php.ini 檔案。
最後,如您所見,我以 CGI 模式執行 PHP。這種做法有其優點和限制。如果您必須以 Apache 模組的方式執行 PHP,那麼……很抱歉,您必須使用其他解決方案(最好的建議永遠是:Google 一下!)。
希望這能對某些人有所幫助。