动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 让你的PHP4和PHP5共存

作者来源: 
阅读 1342 人次 , 2006-3-29 4:07:00 


好处不多说了,: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
①解压缩下载文件(:) 地球人都知道)
②将php4.3.3中的php.exe, php.ini-recommended, phpêmbed.lib, php4ts.dll, php4ts.lib, dll/*.* 和 extensions/*.* 拷贝到c:/httpd/php4
③修改php.ini-recommended:
extension_dir = "c:/httpd/php4/extensions/"
cgi.force_redirect = 0
保存为php.ini(就在c:/httpd/php4/下)

㈡安装php5.0.0beta
①解压缩...
②将php.exe, php.ini-recommended, phpêmbed.lib, php4ts.dll, php4ts.lib, dll/*.* 和 extensions/*.*拷贝至c:httpdphp5
如果是php5.0.0rc1,那么没有dll和extensions目录,只有ext--就是extensions拉
如果...你是mysql的忠实用户,别忘了把libmysql.dll也拷过去[注2].
③修改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 &quot;c:/httpd/www&quot;
<directory &quot;c:/httpd/www&quot;>
options indexes followsymlinks multiviews
allowoverride none
order allow,deny
allow from all
</directory>
scriptalias /php4/ &quot;c:/httpd/php4/&quot;
addtype application/x-httpd-php .php
action application/x-httpd-php &quot;/php4/php.exe&quot;
</virtualhost>

<virtualhost *:80>
serveradmin test@php500
servername php5
documentroot &quot;c:/httpd/www&quot;
<directory &quot;c:/httpd/www&quot;>
options indexes followsymlinks multiviews
allowoverride none
order allow,deny
allow from all
</directory>
scriptalias /php5/ &quot;c:/httpd/php5/&quot;
addtype application/x-httpd-php .php
action application/x-httpd-php &quot;/php5/php-cgi.exe&quot;
</virtualhost>

 

六,关于php5和mysql
mysql的安装,我就不多说了,自己下了装吧...(跳过这段没意见吧? )
你可以通过修改php.ini,来加载mysql... (难过...)

七,测试...
启动apache(如果httpd.conf配置有错,会有出错提示...),然后地址栏输入http://php4和http://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时,如果看到什么&quot;overlap on port 80&quot;...不要着急,在httpd.conf中,把namevirtualhost *:80前的注释去了即可...(这个地方难了我好长时间...只怪apache设置不熟悉.不过这次算好好把apache的设置看了遍,还是有收获)

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PHPlet在Windows下的安装
· 下一篇:在Windows中安装Apache2和PHP4的权威指南
· 文件上传——终结者
· 如何提高你的PHP编程技术
· 聊天室技术(六)-- 表情和动作
· PHP 编码规范(22)
· 获取远程图片并把它保存到本地


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077