Apache 和 IIS 的巧妙结合
前段时间决定运用PHP5来开发最新的项目。由于很多程序还是用PHP4开发的,所以就涉及到如何同时调试PHP4和PHP5程序的问题了。经过一番试验,终于找到一种简单的方法,让我可以方便的调试PHP4和PHP5程序。
基本设置
原理说穿了很简单,就是让IIS运行PHP4,然后让Apache2运行PHP5。难点主要就是如何解决PHP4和PHP5使用各自php.ini的问题。
Apache 和 IIS 的巧妙结合
前段时间决定运用PHP5来开发最新的项目。由于很多程序还是用PHP4开发的,所以就涉及到如何同时调试PHP4和PHP5程序的问题了。经过一番试验,终于找到一种简单的方法,让我可以方便的调试PHP4和PHP5程序。
基本设置
原理说穿了很简单,就是让IIS运行PHP4,然后让Apache2运行PHP5。难点主要就是如何解决PHP4和PHP5使用各自php.ini的问题。
一、首先安装配置IIS+PHP4,方法就不啰嗦了。然后在IIS中,将默认网站的TCP端口设置为8080,以避免和Apache发生冲突;
二、安装Apache(我装的Apache 2.0.52)和PHP5。安装PHP5时,不要把PHP5的php.ini复制到C:\Windows中,这样会覆盖掉PHP4的php.ini文件。只要把PHP5的php.ini放在PHP5安装目录里面就行了;
三、配置Apache以支持PHP5:
LoadModule php5_module "d:/usr/local/php-5.0.3-Win32/php5apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
PHPIniDir "d:/usr/local/php-5.0.3-Win32"
其中最重要的一条就是 PHPIniDir,用来指明php.ini文件所在位置(也就是PHP5的安装目录)。
按照上面的配置后,PHP4和PHP5就可以同时运行了。使用 http://localhost:8080/ 就是访问IIS+PHP4,而 http://localhost/ 就是访问Apache+PHP5。
进一步优化
现在对刚刚的设置进一步优化,避免访问IIS+PHP4还要指定端口号的麻烦。
一、修改Apache配置文件,启用Proxy模块;
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
二、继续修改Apache配置文件,让Apache处理对IIS+PHP4的访问;
ProxyPass /iis/ http://127.0.0.1:8080/
ProxyPassReverse /iis http://127.0.0.1:8080
这两行配置告诉Apache,当处理以/iis路径的请求时转发到 http://127.0.0.1:8080/。由于Apache的代理功能对于访问者来说是完全透明的,因此我们就可以使用下面的路径分别访问IIS+PHP4和Apache+PHP5:
http://localhost/iis/ 访问IIS+PHP4
http://localhost/ 访问Apache+PHP5
现在感觉就好多了,不用输入端口号就可以很方便的访问PHP4和PHP5程序了。
让不同的虚拟主机分别使用PHP4和PHP5
按照上面的思路,还可以让不同的虚拟主机使用不同版本的PHP。参考下面的配置:
<VirtualHost *:80>
ServerAdmin daut@dualface.com
DocumentRoot E:/www/dualface_dot_com
ServerName www.dualface.com
ServerAlias dualface.com
DefaultLanguage zh-CN
AddDefaultCharset UTF-8
</VirtualHost>
<VirtualHost *:80>
ServerAdmin daut@dualface.com
ServerName dev.dualface.com
DefaultLanguage zh-CN
AddDefaultCharset GB2312
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
上面的配置中,一个虚拟主机的域名是 www.dualface.com。这个虚拟主机使用了PHP5,所以直接由Apache处理访问请求。另一个虚拟主机是 dev.dualface.com,由Apache转发到 http://127.0.0.1:8080/ 到处理。
当然了,我们不一定非要用IIS+PHP4和Apache+PHP5这种组合,改为Apache+PHP4和Apache+PHP5也是可以的,只不过多安装一套Apache而已。而且利用这个技巧,不但可以让虚拟主机使用不同的PHP,还可以让IIS来运行ASP、ASP.NET程序、Apache来处理静态网页和PHP程序,充分发挥Apache和IIS各自的强项。