Apache多虛擬主機多版本PHP(5.2+5.3+5.4)共存執行配置全過程
因為某種需求,可能是因為早期的專案需要低版本的php,和目前開發所用的版本不太一致,我們需要給不同的虛擬主機配置不同版本的PHP。避免去額外配置多個Apache,等iis和apache共存的麻煩。
下文引量說明:
D:/Apache/ Apache安裝目錄
D:/php53/ PHP5.3版本目錄,以上版本類同
D:/WEB/* 虛擬主機主目錄
-
#準備工作
測試系統(windows7x64)
所需檔案 apache2.2(x86)、PHP(nts)、fcgid(mod_fcgid-2.3.6-win32-x86)
1.常規手動部署apache方法
PHP各版本解壓到不同目錄並配置,任意位置,方便即可。
2.開啟httpd.conf 註釋掉以下類似配置
#LoadModule php5_module "D:/php53/php5apache2_2.dll"
#PHPIniDir "D:/php53/"
3.增加配置(尾部或中部即可)
#載入fcgid擴充套件模組(額外說明,fcgid根據實際apache版本對應,apache2版本測試2.3.6正常)
LoadModule fcgid_module modules/mod_fcgid.so
#新增對映
AddHandler fcgid-script .fcgi .php
# 設定PHP_FCGI_MAX_REQUESTS大於或等於FcgidMaxRequestsPerProcess,防止php-cgi程序在處理完所有請求前退出
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
#php-cgi每個程序的最大請求數
FcgidMaxRequestsPerProcess 1000
#php-cgi最大的程序數
FcgidMaxProcesses 3
#最大執行時間
FcgidIOTimeout 120
FcgidIdleTimeout 120
AddType application/x-httpd-php .php
#------這裡是預設虛擬主機配置
#php.ini的存放目錄
FcgidInitialEnv PHPRC "D:/php5.4.4/"
#php-cgi的路徑
FcgidWrapper "D:/php5.4.4/php-cgi.exe" .php
4.修改新增執行許可權(如若不然,可能會提示HTTP錯誤,禁止訪問403)
ExecCGI 為附加值
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
Order deny,allow
Deny from all
</Directory>
5. 虛擬主機檔案配置 (每個虛擬主機獨立的配置段中只需要更改其配置版本路徑即可,以下配置為PHP5.3.1虛擬主機配置)
<VirtualHost *:80>
ServerName "apihost"
ServerAlias www.apihost.com api.apihost.com
FcgidInitialEnv PHPRC "D:/php5.3.1/"
FcgidWrapper "D:/php5.3.1/php-cgi.exe" .php
DocumentRoot "D:/WEB/apihost/wwwroot/"
ErrorLog "D:/WEB/apihost/log/error.log"
CustomLog "D:/WEB/apihost/log/access.log" common
</VirtualHost>
重啟Apache完工!
以上內容為小編測試使用記錄,網上類似的文章並不多,有其他預設CGI配置方式+htaccess配置過程,經小測試沒有成功。
如果你有更好的方法可以在底部留言哦!
#以下為小編整理的引文,供大家參考使用。
1.mod_fcgid指令的中文翻譯
http://blog.csdn.net/xuejiazhi/article/details/9022961
2.mod_fcgid下載地址(vc10以上)
http://www.apachelounge.com/download/VC10/
3.apache+php多版本共存解決方案
http://www.zhixing123.cn/php/19008.html
4.apache多版本php配置過程
http://www.cnblogs.com/xiaoyaoxia/archive/2011/09/29/2195434.html
5.WampServer中Apache使用FastCGI模式跑PHP5.3nts版
6.PHP中VC6、VC9、TS、NTS版本的區別與用法詳解
http://www.jb51.net/article/42422.htm
補充:ISAPI來執行PHP,每一個請求不會立即結束,選擇執行緒安全版
FastCGI執行PHP,單一的執行緒執行程式,選擇非執行緒安全版