• 3799阅读
  • 0回复

PHP5模块和CGI [复制链接]

上一主题 下一主题
离线cai
 

只看楼主 倒序阅读 0楼 发表于: 2005-06-13
[转载自]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了。
grant all privileges on *.* to 'a'@'localhost' identified by 'a' with grant option;flush privileges;
快速回复
限100 字节
 
上一个 下一个