[转载自]http://blog.csdn.net/httpnet/archive/2005/02/08/284535.aspx
把PHP5作为CGI安装是一个快速运行PHP5的方法,并且不必修改PHP4的配置。
另外一个不必修改PHP4的配置用同时获得完全的PHP5功能的方法是把PHP5设置在apache的另外一个端口上监听来自客户端的请求。比如apache的8080端口。这样就可以在80端口上处理PHP4脚本,在8080端口上处理PHP5的面向对象的脚本,一举两得。
记住CGI安装方式与模块安装方式相比有一些限制。它不能直接利用APACHE HTTP基本身份认证的优势。也不能使用apache_note()函数读取和设置notes 表中的值。(apache_note() 是用于 Apache 的函数,可以取得或者设置请求 notes 表中的值。如果只有一个参数调用,则返回记录 note_name 的当前值。如果用两个参数调用,则将记录 note_name 的值设为 note_value 并返回记录 note_name 的前一个值。) 引用自 | php手册->函数参考->apache函数库->apache_note
php手册下载地址
http://cn2.php.net/distributions/manual/php_manual_zh.chm
作为CGI配置PHP5
删除 --with-apxs.
加入 --enable-force-cgi-redirect 选项.
加入 --prefix=/usr/local/php5 选项.
定制 php.ini.
PHP5 要用--prefix=/usr/local/php5选项强制安装到其知道的目录并PHP4隔离开。并且不能覆盖PHP4的文件和配置数据。
在apache配置文件HTTP.CONF中添加下列指令,让apache知道PHP5的cgi程序的位置。也就是做一个APACHE到PHP5 CGI的目录映射。
ScriptAlias /php5 /usr/local/php5/bin
<Directory /usr/local/php5/bin/>
Options +ExecCGI +FollowSymLinks
AllowOverride None
</Directory>
ScriptAlias
把web服务器的URL路径映射到本地文件系统,既然我们这里是作为CGI程序安装。那么apache必须得知道cgi程序得位置。例如,ScriptAlias /book/php5 /usr/local/php/php5/bin,服务器域名为www.apache.org 那么当客户端的请求到达apache服务器的时候,它就会到/usr/local/php/php5/bin
这个本地文件系统去执行存储在其中的程序。
建立了映射后,下一步是路由特定文件类型的文件到CGI去执行,这可以通过两种方法来配置,一种是在http.conf配置文件中添加如下指令
<Directory /www/www.example.com/php5-folder>
AddHandler php-cgi-script .php
Action php-cgi-script /php5/php
Options +ExecCGI
</Directory>
AddHandler 指令表示任何以 .php结尾的文件都被apach服务器认为是 php-cgi-script脚本,并且转交给PHP CGI去执行。在一行中可以设置多个文件类型。
例如
AddHandler php-cgi-script .php .phpx .phtml .pxml
那么以php,phpx,phtml,pxml结尾的文件都被认为是php脚本而移交给PHP解析器解析和执行。
第二行 Action 指令告诉apeche php-cgi-script 脚本应该被位于/php5/php目录下的文件处理,因为先前你做了URL /php5 到本地文件系统的 /usr/local/php5/bin/ 的映射,所以此命令实际上是映射到
了/usr/local/php5/bin/php目录,这实际上是PHP5 CGI安装的位置。
最后,既然把PHP5作为CGI运行,你必须打开 +ExecCGI 参数(打开脚本的执行权限),让apache允许在这个目录下执行脚本。
另外一种方法是在脚本目录下创建.htaccess访问控制文件,并在其中加入上面<Directory> </Directory>之间的三行指令。apache会在有客户端请求到达此目录时自动检查改文件,看是不是有适当的权限使PHP脚本能够执行。
用.htaccess配置文件不用重新启动apach服务器就可以使对配置的修改立即生效。但是,它要求你打开AllowOverride 选项(设置为Options 或 All)。这样会降低APCHE的执行效率,因为每次请求到达此目录时apache都要检查和解析这个文件。当并发请求剧增时,apache服务器的效率会严重下降。所以这种方法在并发访问高的网站时不推荐的。
端口
另一个一举两得的方法时在一个端口运行PHP4,在另一个端口运行PHP5,这种方法最适合于内部调试和开发。这样,程序员可以检查php程序在PHP5环境下的运行状态。
第一步 在http.conf文件中添加如下两行
Listen 80
Listen 8080
像其他的web服务器一样,apache在80端口监听客户端请求。上面两行告诉apache同时在80和8080端口监听客户端请求。
然后 设置虚拟主机
<VirtualHost _default_:8080>
ScriptAlias /php5 /usr/local/php5/bin
<Directory /usr/local/php5/bin/>
Options +ExecCGI +FollowSymLinks
AllowOverride None
</Directory>
AddHandler php-cgi-script .php
Action php-cgi-script /php5/php
Options +ExecCGI
</VirtualHost>
用实际的域名替换_default_。如果使用多个虚拟主机,还要用DocumentRoot指令为每个虚拟主机指定不同的根目录。
例如:
<VirtualHost www.example.com:80>
# Virtual Host Specific Options
DocumentRoot /www/www.example.com
# Load PHP 4 Apache Module
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
</VirtualHost>
<VirtualHost www.example.com:8080>
# Repeated Configuration Options
DocumentRoot /www/www.example.com
# Add PHP 5 CGI Script
ScriptAlias /php5 /usr/local/php5/bin
<Directory /usr/local/php5/bin/>
Options +ExecCGI +FollowSymLinks
AllowOverride None
</Directory>
那么现在你就可以从浏览器中用 http://www.mysite.org/访问 PHP4。从http://www.mysite.org:8080/访问PHP5了。