喜悦国际村 » 喜悦原创 » [原]PHP4、5 共存

页: [1]
coolhpy2006-8-11 04:20 PM
[原]PHP4、5 共存

[b]一、引言[/b]
    好处就不用偶说了吧?呵呵,真要偶说,偶也说不出个所以然,就当体验下 PHP5 的新特性吧。(虽然5已经出来很久了,但偶还没怎么用过,失败啊~~ :P )
    曾在网上看到一篇类似的文章,其介绍的安装方法相对比较容易懂,也挺方便的,就是以建立两个虚拟机,然后将将 PHP4 和 PHP5 以 CGI 方式分别挂在这两个虚拟机上(不知道有没有记错了,应该是这么个理)。但这样做效率好象不是很高?不过如果只是本机测试的话,问题也不大。应该没人会在服务器上装两个版本的 PHP 吧?呵呵```其实本文所介绍的方法的原理也挺简单的,就是安装两个服务器,反正是为了体验 PHP5 嘛,只要机子跑得动,管他那么多干啥?!呵呵~~。
    不知道大家有没有注意到 Apache 的 Service Monitor 是支持多个服务的。那么如果在同一台机子上运行两个 Apache 服务是不是可以让 PHP4 和 PHP5 分别以模块方式运行呢(当然,端口要不同)?另外一个问题,这两个 Apache 服务是否可以访问同一个数据库,从而避免数据库的移植呢?
    带着这两个问题,下面开始了我们的探索之旅...

[b]二、下载[/b]
apache_2.0.59-win32-x86-no_ssl.msi        [url]http://httpd.apache.org[/url]
php-4.4.3-Win32.zip        [url]http://www.php.net/downloads.php[/url]
php-5.1.4-Win32.zip        [url]http://www.php.net/downloads.php[/url]
mysql-essential-4.1.21-win32.msi        [url]http://dev.mysql.com/downloads/[/url]

[b]三、安装[/b]
    为方便说明起见,下面的安装程序将全部安装到:D:/Server 目录下
    因为 PHP4 将被安装在 D:/Server/Apache2/php 目录下,PHP5 将被安装在 D:/Server/Apache2_php5/php 目录下,为了下面的安装方便、顺利进行,建议大家先将设置一下环境变量 PATH,将其值附加
D:\Server\php;D:\Server\php\dlls;D:\Server\Apache2_php5\php;
然后,重启动机器。
    如果不这么做的话,就要将大堆的 DLL 文件拷贝到系统目录下,那样会使得系统目录变得非常乱,所以建议大家还是设置一下的好。

3.1 安装MySQL
    网上有很多这种资料,大家 baidu 或者 google 一下,有很多的。
3.2 安装第一个服务
    3.2.1 Apache的安装
        这步没什么好讲的,注意把安装目录只需要设置为:D:/Server 就可以了,安装程序会自动安装到 D:/Server/Apache2 目录下的。
    3.2.2 PHP4的安装
        将php-4.4.3-Win32.zip解压到目录:D:/Server/Apache2/php下
        将目录下文件php.ini-dist重命名为php.ini

    安装完成后的目录结构,见附件1。

    3.2.3 配置apache以模块方式运行php
        在apache的配置文件httpd.conf(D:/Server/Apache2/conf 目录下)中加入以下内容
LoadModule php4_module "D:/Server/Apache2/php/sapi/php4apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "D:/Server/ Apache2/php"

    第一个服务安装、配置完成,重启apache。

    3.2.4 测试
    编写测试文件:test.php,内容如下:
[php]
<?php
phpinfo();
?>
[/php]
    将文件保存到 D:/Server/Apache2/htdocs  目录下。打开浏览器,在地址栏里输入:[url]http://localhost/test.php[/url] 。如果看到内容,说明 Apache 和 php 没问题,然后找一下有没有 mysql 的一段内容,如果有,说明 mysql 模块安装没问题。

3.3 安装第二个服务
    至关重要啊,看仔细了。呵呵```
    3.3.1 Apache 的安装
    复制目录D:/Server/Apache2 为 D:/Server/Apache2_php5

    3.3.2 PHP5 的安装
    将目录D:/Server/Apache2/php下所有文件、文件夹删除
    将php-5.1.4-Win32.zip解压到目录:D:/Server/Apache2_php5/php下
    将目录下文件php.ini-dist重命名为php.ini
    将文件php5ts.dll拷贝到 %WINDOWS% 目录下

    安装完成后的目录结构,见附件2。

    3.3.3 配置 Apache
    将配置文件httpd.conf(D:/Server/Apache2_php5/conf 目录下)中所有的
D:/Server/Apache2
查找/替换为:
D:/Server/Apache2_php5

    将配置文件中原来的以下内容
LoadModule php4_module "D:/Server/Apache2/php/sapi/php4apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "D:/Server/ Apache2/php"
改为:
LoadModule php5_module "D:/Server/Apache2_php5/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "D:/Server/Apache2_php5/php"

    找到:Listen ,将端口改为8080(或者别的,只要没被占用),保存文件。

    3.3.4 配置 php
    在配置文件 php.ini (D:/Server/Apache2_php5/php 目录下)中找到 extension_dir ,将双引号中的值改为:
D:/Server/Apache2_php5/php/ext

    找到:
;extension=php_mysql.dll
将该行前面的 ; 号去掉,保存文件。

    3.3.5 配置服务
    新建一个文本文件,内容为:
D:/Server/Apache2_php5/bin/Apache.exe -n Apache2_PHP5 -k install
保存为 install.bat 文件,至于存在什么地方就随便了,只要你找的到。
双击执行,窗口会自动关闭,且系统的“服务”中多了一项“Apache2_PHP5”
如果没有出来,多半是配置文件的问题,可以尝试在 DOS 下运行 install.bat 看看错误信息,再进行修改
    如果要删除该服务,则另外建一个uninstall.bat文件,内容为:
D:/Server/Apache2_php5/bin/Apache.exe -n Apache2_PHP5 -k uninstall
双击执行就可以了。
当然,如果不喜欢 Apache2_PHP5 这个服务名称,只要改“ -n ”后面、“ -k ”前面的字符就可以了。

    第二个服务安装、配置完成,重启 apache。

    打开 Apache Service Monitor,这时应该已经有两个服务了,见附件3。

    3.3.6 测试
    编写测试文件:test.php,内容如下:
[php]
<?php
phpinfo();
?>
[/php]
    将文件保存到D:/Server/Apache2_php5/htdocs 目录下。打开浏览器,在地址栏里输入:[url]http://localhost:8080/test.php[/url] 。如果看到内容,说明Apache和php没问题,然后找一下有没有mysql的一段内容,如果有,说明mysql模块安装没问题。

四、后记
    感谢您花这么多时间看完这篇文章。由于本人表达能力有限,有些地方可能表述的不是很明白,还请大家见谅。十分欢迎对本文表述不正确、不恰当的地方提出您的意见和建议,共同进步。如果您没有配置成功,请回复告诉我。我想说的是这种方法,确实是可行的,我本机上已经成功运行了。运行环境:Windows XP SP2 + Apache2.0.59 + PHP4.4.3 + PHP5.1.4 + MySQL4.1.21。
    欢迎大家转载,但请注明出处。

[[i] 本帖最后由 coolhpy 于 2006-8-12 12:25 AM 编辑 [/i]]

fcicq2006-8-12 01:59 AM
呵呵.如果用fastcgi的话切换岂不更快...
另外,用一个apache就可以了.根据目录或者virtualhost来安装php也是很好的.

路过2006-8-12 04:43 AM
装两个apache..:o

qh6632006-8-13 03:56 AM
嗯,关键就在于apache的配置。

coolhpy2006-8-14 06:19 AM
[quote]原帖由 [i]fcicq[/i] 于 2006-8-12 09:59 AM 发表
呵呵.如果用fastcgi的话切换岂不更快...
另外,用一个apache就可以了.根据目录或者virtualhost来安装php也是很好的. [/quote]
fastcgi我还没接触过,能不能介绍一下?
别的朋友介绍一下也行,谢谢````````

依龙2006-8-16 12:51 AM
PHP5不是向下兼容PHP4吗?为什么要装两个?

luzhou2006-8-17 11:29 AM
有创意,但是好像没啥意义?

fnet2006-8-18 10:04 AM
我是装了一个apache 2.2 指向 php5

一个apache2.0 指向 php4

共用一个mysql数据库

php4好久没用啦

nety2532006-8-20 01:22 PM
我一般修改httpd.conf  LoadModule php5_module (php4_module)的值,然后重启apache


查看完整版本: [原]PHP4、5 共存


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 4.380886 second(s), 2 queries