0 .背景
关于这个问题,我们需要分两种情况,首先假设需要不同的 PHP 版本数位两个。
第一种情况:两类 php 程序后缀名不同
比如, .php 结尾的程序需要 PHP 4.3.x ,而 .htm1 结尾的程序需要 PH P 4.1.2 ,这种情况可以通过设置不同的 MIME 来解决,这里不讨论。
第二种情况:两类 php 程序后缀名相同
比如,两部分程序都是以 .htm1 结尾,但是某些目录下面的模块需要用 PH P 4.3.6 解析,其他的都用 PHP 4.1.2 解析。这种情况比较复杂,重点讨论
1. 主要思路
通过安装配置各两份 Apache 和 PHP 来解决这个问题,分别装在 4 个不同目录下,一份 Apache 监听 80 端口用 PH P 4.1.2 解析 .htm1 ,另一份 Apache 监听 81 端口用 PHP 4.3.6 解析 .htm1 ,这样就解决了这个问题,可能比较麻烦的一点是,一些模块的连接路径需要加上端口号。
2. 步骤
a) 先安装带 PH P 4.3.6 版本的 Apache+PHP :
假定我们已将 Apache 和 PHP 的源码包下载至 /usr/local/download/ 里,安装方式如下:
先解包:
tar zvxf apache_ 1.3.31 cd apache_1.3.31
编译 apache :
./configure --prefix= /usr/local/apache_a --enable-module=so \
--enable-module=rewrite --enable-shared=max
make
make install ; cd ..
注意以上红色字体部分,这是第一份 apache 的安装位置。
然后编译 ph p 4.3.6
tar zvxf php 4.3.6 .tar.gz cd php4.3.6 ./configure --prefix= /usr/local/php_4.3.6 --with-mysql \ --with-apxs=/usr/local/apache_a/bin/apxs
make
make install
拷贝 PHP 的配置文件:
cp php.ini-dist /usr/local/php_ 4.3.6 /lib/php.ini
修改 /usr/local/apache_a/conf/httpd.conf
查找 <IfModule mod_mime.c>
在此范围添加
AddType application/x-httpd-php .php .htm1
查找 <IfModule mod_dir.c>
在 DirectoryIndex 后添加
index.htm1 index.php
b) 先安装带 PH P 4.1.2 版本的 Apache+PHP :
进入之前解开的那份 Apache 目录内
cd apache_ 1.3.31
编译 apache :
./configure --prefix= /usr/local/apache_b --enable-module=so \
--enable-module=rewrite --enable-shared=max
make
make install ; cd ..
注意以上绿色字体部分,这是第二份 apache 的安装位置。
然后编译 ph p 4.1.2
tar zvxf php 4.1.2 .tar.gz cd php4.1.2 ./configure --prefix= /usr/local/php_4.1.2 --with-mysql \ --with-apxs=/usr/local/apache_b/bin/apxs
make
make install
拷贝 PHP 的配置文件:
cp php.ini-dist /usr/local/php_ 4.1.2 /lib/php.ini
修改 /usr/local/apache_b/conf/httpd.conf
查找 Port 80
改为 Port 81
查找 <IfModule mod_mime.c>
在此范围添加
AddType application/x-httpd-php .php .htm1
查找 <IfModule mod_dir.c>
在 DirectoryIndex 后添加
index.htm1 index.php
c) 分别启动两份 Apache
/usr/local/apache_a/bin/apachectl start
/usr/local/apache_b/bin/apachectl start
并且这两份 Apache 设置为开机自动启动:
echo [/usr/local/apache_a/bin/apachectl start] >> /etc/rc.d/rc.local
echo [/usr/local/apache_b/bin/apachectl start] >> /etc/rc.d/rc.local
d) 其他一些需要注意的事项 更多php资料
本机器的防火墙,以及机房的防火墙都要开放 81 端口,相关的链接地址需要修改。
查看更多关于不同PHP版本共存的方法,我们需要分两种情况,首的详细内容...