優良搬家公司,報價實在
24H全省搬遷服務,免費估價。
清潔公司油漆專家20多年老經驗,專業的油漆工程
裝潢設計之首選,免費估價

首頁  •  tw 論壇 • 程式設計討論     • 

[php] 讓你的PHP4和PHP5共存

房東:宏子
發表時間:2011-03-17
[檢舉]


讓你的PHP4和PHP5共存...



好處不多說了,:D 壞處嘛...是CGI方式的(引用官方原文:we consider installing PHP like this suicidal.)

廢話少說,直接看方法:



一,本文涉及軟件極其版本:

Windows 2000 Professional/XP

Apache 1.3.28 FOR WIN

Microsoft Internet Server Information(IIS6)

PHP 4.3.3(4.3.5), PHP 5.0.0 beta(5.0.0RC1)

MySQL 3.23.57(3.23.58)





二,大致步驟:(二,三任選)



1.分別安裝各版本的PHP



2.安裝APACHE,設置APACHE 和 PHP



3.安裝IIS,並在IIS中設置PHP各版本[注1]



4.安裝MYSQL





三,安裝前準備:

將所須程序COPY至各文件夾,本文按照以下目錄結構進行,你可以根據需要自行修改^^:



C:/httpd/Apache


C:/httpd/MySQL


C:/httpd/PHP4


C:/httpd/PHP5


C:/httpd/php-includes


C:/httpd/phpMyAdmin


C:/httpd/tmp


C:/httpd/www





到C:/WINNT/system32/drivers/etc(XP是C:/WINDOWS/system32/drivers/etc)文件夾下,找到hosts文件(沒有?! @_@ 那麼.... :D ),在底下增加



127.0.0.1 php4 # Waiter PHP 4 


127.0.0.1 php5 # Waiter PHP 5





吼吼...如果你懂~~自己修改其他名字吧 8D 我們繼續...

保存文件...





四,安裝各版本PHP

假設你已經下載你需要的各版本PHP...(哪下載?? :P 自己找吧...)

這裡以4.3.3和5.0.0-beta為例...(4.3.5vs5.0.0RC1我也試了.如果和你環境不一樣不要怪我 :( ,大同小異,自己琢磨吧) ;)



一安裝PHP4.3.3

1解壓縮下載文件(:) 地球人都知道)

2將PHP4.3.3中的php.exe, php.ini-recommended, phpêmbed.lib, php4ts.dll, php4ts.lib, dll/*.* 和 extensions/*.* 拷貝到C:/httpd/PHP4

3修改php.ini-recommended:

extension_dir = "C:/httpd/PHP4/extensions/"

cgi.force_redirect = 0

保存為php.ini(就在C:/httpd/PHP4/下)



二安裝PHP5.0.0BETA

1解壓縮...

2將php.exe, php.ini-recommended, phpêmbed.lib, php4ts.dll, php4ts.lib, dll/*.* 和 extensions/*.*拷貝至C:\\httpd\\PHP5

如果是PHP5.0.0RC1,那麼沒有dll和extensions目錄,只有ext--就是extensions拉

如果...你是mysql的忠實用戶,別忘了把libmysql.dll也拷過去[注2].

3修改php.ini-recommended:

extension_dir = "C:/httpd/PHP5/extensions/"

cgi.force_redirect = 0

如果是PHP4.0.0RC1,那麼extension_dir = "C:/httpd/PHP5/ext/"

保存為php.ini(就在C:/httpd/PHP5/下)





五,配置APACHE

打開C:/httpd/Apache/conf/httpd.conf,在底下追加一些設置:



<VirtualHost *:80> 


ServerAdmin test@php433


ServerName php4


ServerAlias www


DocumentRoot "C:/httpd/www"


<Directory "C:/httpd/www">


Options Indexes FollowSymLinks MultiViews


AllowOverride None


Order allow,deny


Allow from all


</Directory>


ScriptAlias /php4/ "C:/httpd/php4/"


AddType application/x-httpd-php .php


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


</VirtualHost>





<VirtualHost *:80> 


ServerAdmin test@php500


ServerName php5


DocumentRoot "C:/httpd/www"


<Directory "C:/httpd/www">


Options Indexes FollowSymLinks MultiViews


AllowOverride None


Order allow,deny


Allow from all


</Directory>


ScriptAlias /php5/ "C:/httpd/php5/"


AddType application/x-httpd-php .php


Action application/x-httpd-php "/php5/php-cgi.exe"


</VirtualHost>







六,關於PHP5和MYSQL

MYSQL的安裝,我就不多說了,自己下了裝吧...(跳過這段沒意見吧? )

你可以通過修改php.ini,來加載MYSQL... (難過...)



七,測試...

啟動APACHE(如果httpd.conf配置有錯,會有出錯提示...),然後地址欄輸入http://php4http://php5就分別啟動PHP4和PHP5咯...爽嗎? :D :D :D [注3]

相信對廣大PHP程序員,以及想學PHP5又不想放棄PHP4的同志來說,這會是個不錯的方法.ENJOY IT!



總結一下:

其實思路很簡單,利用CGI方式實現PHP4和PHP5的共存.我找了很多資料,這個算最簡單最實用了.不過只適合大家本機玩,千萬別在服務器上這麼搞...否則~後果自負...別找我



如果你按上面方法有問題,可以嘗試其他途徑,這裡羅列一些國外的成功\案例:

http://wiki.coggeshall.org/37.html

http://www.circle.ch/blog/p1387.html

http://www.schlitt.info/applications/blog/..._5_prallel.html



有興趣的可以繼續學習下...





繼續關於本方案的一點重要補充:



PHP4和PHP5共存,存在一個php.ini衝突的問題...

大家都知道,一般做法是需要將php.ini複製到系統文件夾下(C:WinNT or C:Windows).如果同時安裝多版本,勢必會造成衝突...



其實,如果大家仔細閱\讀PHP安裝文檔,會有如下一段文字:

Does Where C I cut to could the php.ini? The php.ini files is only searched in two places: 1) in your Apache installation directory (e.g. c:apacheapache) 2) in your %SYSTEMROOT% directory.



而我們正是使用的第一種方式...(是不是官方早料到有這種情況??GOD KNOWS...)



上兩張安裝後的 PHPINFO 的圖:



【原文這裡有圖】



我在上述環境下測試成功\了...如果你遇到困難可以留言或到討論區一起討論。



結語:

偶不太會寫教程之類的東東...自己看了懂,卻不是很容易讓別人理解,大家只好忍讓了.

雖然過程比較簡單,不過費了我不少時間(有兩個地方...我找的資料有誤,把我害慘了),這個大A作證拉...( :D 大A睡了一覺起來上廁所,我還在...此處少兒不宜,刪去500字)



PHP5時代越來越近,趕緊深入瞭解去吧...



-------------------------------------------------------------------------

[注1]:

本來想寫FOR IIS的...可實在不想在自己機器上裝個沒用的東西(對我而言 :( ),so...標題列了,卻放棄寫了...對部分看客說聲抱歉...



[注2]:

這裡說點題外話:在PHP5.0.0RC1中,不知道大家看到ext下有個mysqli.dll,以及php.exe同層目錄下有個libmysqli.dll麼?奇怪這是幹嘛的?其實這是官方針對MYSQL的新版(4.1.0好像是...吧)的一個升級,對於高版本MYSQL玩家可以試試...據說支持MYSQL一些新特性哦



[注3]:

在啟動APACHE時,如果看到什麼"overlap on port 80"...不要著急,在httpd.conf中,把NameVirtualHost *:80前的註釋去了即可...(這個地方難了我好長時間...只怪APACHE設置不熟悉.不過這次算好好把APACHE的設置看了





  • 贊助網站       

    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!



  •  共 0 人回應

    姓名:
    佈告內容: