筆者一直都在php3環境下調試程序,後來換成php4後,就覺得問題不少。
主要是一些原來在php3下運行正常的程序忽然發現在php4下出了好多毛病。
而原來在php4下的程序到了php3中又說xx函數沒定義或者說某個函數語法不完整什麼的。於是忽然想起:可以不可以把兩者都裝上呢?也好測試程 序對兩者的兼容性啊。
筆者參考的php4/3的安裝和說明文檔中並沒有具體說明方法,大概只說 了兩者可以通過--enable-versioning指令以及DSO模式達到共存目的。那到底是如何個DSO呢?經過筆者n次反復琢磨安裝和配置實踐,最終成功將 兩者都順利安裝到同一個web服務器內,凡是.php3的文件就由php3解析,而.php文件就由php4解析。
實現的原理:
要實現兩個不同版本的解析器共存工作,必須使用enable-versioning 指令,而應該在什麼時候使用呢?這個取決於哪個版本的解析器安裝在 後面,那麼這個指令就只需要在後面安裝的時候使用。就是說,如果你 是先裝php4(本例中就是這樣),後裝php3的,那麼配置php3的時候就要 添加enable-versioning指令。反過來也是一樣道理。
以下是安裝配置步驟:
1、考慮到筆者自己的系統中裝的是php4,采用的是static模式,因此如果要 采用DSO,那麼只能是php3采用了。但是enable-versioning到底是什麼時候 加呢?由於文檔中並沒清楚說明,筆者只能自己測試了。關於安裝apache的配置指令這裡就不多贅述了。
2、先編譯和安裝php4,采用靜態方式,主要指令如下:
./configure --with-mysql=/www/mysql --with-apache=../apache_1.3.12
> --enable-track-vars
3、注意:編譯和安裝好php4後,要先將apache安裝好,否則下一步以DSO模式 安裝和編譯php3的時候沒辦法apxs腳本了。並且要注意!!!!的是,配置apache 的時候要加入--enable-shared=max指令(就是使用dso方式)然後再編譯並 安裝好apache。
4、最後,就配置和編譯php3。解壓後,運行:
./configure --with-mysql=/www/mysql --with-apxs=/www/httpd/bin/apxs
> --enable-versioning
make
make install
一般情況下基本上沒問題。
如果讀者使用的是php4rc1等比較老的php4的話也許在編譯的時候出現不去 編譯php4rc1目錄的內容而只編譯php3目錄內容,那麼一個解決方法是在編譯 好php4後將php4rc1的目錄改變名字,這樣就沒問題了。
測試:一般只要順利通過編譯和安裝,那麼只需要修改好httpd.conf關於php3和 php4的設置項,然後重新啟動apache就可以了。
在htdocs目錄下建立兩個文件test.php 和test.php3,正常情況下調用test.php會顯示php4的內容而調用test.php3則顯示php3的內容。
test.php/test.php3內容如下:
phpinfo();