PHP5模块和CGI

    把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了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值