加勒比HEZYO黑人专区-久久精品国产99国产精品亚洲-精品国产18久久久久久-久久人妻少妇嫩草AV

歡迎光臨 織晶網(wǎng)絡官網(wǎng)!

  • 服務支持
  • 020-39182790
技術文檔您現(xiàn)在的位置:首頁 > 服務支持 > 技術文檔

PHP多版本共存解決方案圖解

作者:織晶客服部   發(fā)布于:2015/9/8 9:40:21  點擊量:  來源:知行網(wǎng)

我這里說的php多版本共存不僅僅是php4、php5兩個大版本號程序的共存,而是php的很多小版本號程序的共存,例如php4.3.1、php4.4.5、php5.2.0、php5.2.9等等,不僅如此,由于測試的需求,我還需要做到php的版本可以隨時靈活切換。

目前網(wǎng)上很多的解決方案是在本機安裝IIS和Apache或安裝多個apache服務,每個服務器安裝一個版本的php來達到版本共存的要求,但是要按照我的要求,這么做既麻煩又復雜(想想要調(diào)試10個版本的php怎么辦)。既然網(wǎng)上沒有,我就只好自己來研究,下面就是我摸索出的完美解決方案:

實現(xiàn)思路:Apache + .htaccess + PHP CGI


眾所周知,php cgi的配置代碼如下

ScriptAlias /php/ "D:/WebService/php-5.2.8-Win32/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

ScriptAlias的解釋

映射一個URL到文件系統(tǒng)并視之為CGI腳本

The ScriptAlias directive has the same behavior as the Alias directive, except that in addition it marks the target directory as containing CGI scripts that will be processed by mod_cgi's cgi-script handler. URLs with a case-sensitive (%-decoded) path beginning with URL-path will be mapped to scripts beginning with the second argument, which is a full pathname in the local filesystem.

Alias指令使文檔可以被存儲在DocumentRoot以外的本地文件系統(tǒng)中。以(%已解碼的)url-path路徑開頭的URL可以被映射到以directory-path開頭的本地文件

那這里,我們就可以從ScriptAlias下手,來映射不同版本php文件夾

在httpd.conf文件中我們可以這樣寫

ScriptAlias /php5.2.8/ "D:/WebService/php-5.2.8-Win32/"
ScriptAlias /php5.2.7/ "D:/WebService/php-5.2.7-Win32/"
ScriptAlias /php5.2.0/ "D:/WebService/php-5.2.0-Win32/"
ScriptAlias /php4.3.1/ "D:/WebService/php-4.3.1-Win32/"
ScriptAlias /php4.4.6/ "D:/WebService/php-4.4.6-Win32/"

這樣我們就映射了許多的虛擬腳本路徑,如果我們需要使用某個版本的php 就可以修改 Action application/x-httpd-php 的虛擬路徑來實現(xiàn)了。

例如,我們想使用4.3.1版本的php,修改Action application/x-httpd-php為

Action application/x-httpd-php "/php4.3.1/php.exe"

但是直接把配置代碼寫在配置文件中,每次修改PHP版本都要重啟Apache才可以,而且每次只能使用一個版本的PHP,使用起來還是非常的不方便。
這個時候我想到了apache的.htaccess文件,在Apache里面.htaccess文件提供了針對每個目錄改變配置的方法,可以讓同一個服務器下不同目錄使用不同的配置方案。
我們在服務器目錄下放置一個.htaccess文件,內(nèi)容寫上
Action application/x-httpd-php "/php5.2.8/php-cgi.exe"
那么當前目錄Apache就會采用php5.2.8來解析php程序
同理,我們在服務器上為每一個版本的php建立一個文件夾或者虛擬主機,然后在目錄中放置一個設定好php版本的.htaccess文件即可實現(xiàn)同一服務器運行不同版本php程序。

下面是配置步驟

1、下載自己需要版本的php程序文件,配置好每個版本php的php.ini文件,將它們放在各自文件夾的根目錄即可。
然后把這些文件統(tǒng)一的放置在一個文件夾里(放哪其實無所謂,你找得到就行),由于我們配置的php是以cgi形式運行的,所以我們不需要拷貝任何文件到系統(tǒng)目錄下面。
然后在Apache的配置文件中按照以下格式填寫,有幾個版本就寫幾行
ScriptAlias /php版本號/ "php版本程序文件絕對物理路徑"
例如:
ScriptAlias /php5.2.8/ "D:/WebService/php-5.2.8-Win32/"
ScriptAlias /php5.2.7/ "D:/WebService/php-5.2.7-Win32/"
ScriptAlias /php5.2.0/ "D:/WebService/php-5.2.0-Win32/"
ScriptAlias /php4.3.1/ "D:/WebService/php-4.3.1-Win32/"
ScriptAlias /php4.4.6/ "D:/WebService/php-4.4.6-Win32/"

寫完之后,再增加以下代碼
AddType application/x-httpd-php .php

2、為了.htaccess文件起作用,我們需要在httpd.conf中找到節(jié)點將里面的 AllowOverride 屬性修改為 AllowOverride All.
這樣設置后apache下所有的文件目錄默認情況下就會支持.htaccess的配置了。
如果你的網(wǎng)站目錄有使用標簽來單獨設置,請自行查找該目錄的 AllowOverride 屬性設置并修改。
設定完畢后請重啟Apache服務。

3.到你想指定php版本的網(wǎng)站目錄中放置一個.htaccess文件,在文件中寫入以下代碼
如果是php4,需要這么寫
Action application/x-httpd-php "/php版本號/php.exe"
如果是php5,需要這么寫
Action application/x-httpd-php "/php版本號/php-cgi.exe"
例如,我需要php4.3.1來解析,那么就這么寫
Action application/x-httpd-php "/php4.3.1/php.exe"

寫一個phpinfo看看當前版本,然后可以嘗試修改.htaccess中php的版本映射路徑后刷新頁面,怎么樣,版本信息立馬變化,不需要再次重啟apache了




上一篇:access數(shù)據(jù)庫設計的功能特點

下一篇:如何解決js沖突問題