关于PHP以fastcgi方式运行的文章,网络上较多,也许由于转载的原因,有些地方不甚明了,笔者亲自测试,整理成文,供大家参考。

1、linux系统

[root@localhost /]# cat /etc/redhat-release 

CentOS release 5.2 (Final)

2、安装apache 

下载并解压缩apache,本文演示用的版本是2.2.19

[root@localhost]# wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.19.tar.gz

[root@localhost]# tar xvzf httpd-2.2.19.tar.gz

编译和安装apache,本文的目的只是演示php以fastcgi方式运行,为了方便,只选必须的参数编译

[root@localhost]# cd httpd-2.2.19

[root@localhost]#./configure --enable-so

[root@localhost]#make

[root@localhost]#make install

3、安装mod_fcgid(注意是mod_fcgid,不是mod_fastcgi)

下载并解压缩mod_fcgid,本文测试时用的版本是2.3.6

[root@localhost]wget http://labs.renren.com/apache-mirror//httpd/mod_fcgid/mod_fcgid-2.3.6.tar.gz

[root@localhost]tar xvzf mod_fcgid-2.3.6.tar.gz

编译并安装mod_fcgid

[root@localhost]cd mod_fcgid-2.3.6

[root@localhost]APXS=/usr/local/apache2/bin/apxs ./configure.apxs

[root@localhost]make

[root@localhost]make install

注释:网络上部分文档没有APXS=/usr/local/apache2/bin/apxs,详情参考mod_fcgid软件中的README-FCGID文档

4、安装PHP

下载并加压缩PHP,PHP版本是5.3.6

[root@localhost]wget http://www.php.net/get/php-5.3.6.tar.bz2/from/cn.php.net/mirror

[root@localhost]tar xvjf php-5.3.6.tar.bz2

编译并安装PHP

[root@localhost] cd php-5.3.6

[root@localhost]./configure --prefix=/usr/local --with-configure-file-path=/etc

[root@localhost]make

[root@localhost]make install

注释:要是有库文件报错,请安装相关库文件,笔者的系统上曾报libxml2的错,yum install libxml2-devel,解决问题。网络上很多文档,说要使用--enable-fastcgi这个参数,笔者在./configure --help中没有找到这个参数,倒是找到一个--disable-cgi的参数,因而决定不加--enable-fastcgi这个参数,此后证实这个参数可以不加。--with-apxs2这个参数一定不能加。

5.配置

创建FastCGI脚本目录

[root@localhost]# mkdir /usr/local/apache2/fcgi-bin

[root@localhost]# ln -s /usr/local/php/bin/php-cgi /usr/local/apache2/fcgi-bin/php-cgi

编辑apache配置文件

[root@localhost]# vi /usr/local/apache/conf/httpd.conf

加入以下内容

ScriptAlias /fcgi-bin/ "/usr/local/php5/bin/"

AddHandler php-fastcgi .php

Action php-fastcgi /fcgi-bin/php-cgi

AddType application/x-httpd-php .php

<IfModule mod_fcgid.c>

    IdleTimeout 300

    ProcessLifeTime 1800

    MaxProcessCount 100

    DefaultMinClassProcessCount 3

    DefaultMaxClassProcessCount 8

    IPCConnectTimeout 15

    IPCCommTimeout 300

    MaxRequestsPerProcess 100

</IfModule>

<Directory /usr/local/apache2/fcgi-bin>   

      AllowOverride None

      Options FollowSymLinks +ExecCGI

      Order allow,deny

      Allow from all

</Directory>

修改

<Directory "/usr/local/apache2/htdocs">

    Options Indexes FollowSymLinks +ExecCGI

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

注释:笔者测试的test.php文件放在htdocs目录下面,因此htdocs目录的权限需要ExecCGI,若目录不同,请赋予目录ExecCGI的权限。另LoadModule fcgid_module modules/mod_fcgid.so 这个再装mod_fcgid的时候,自动添加了。

6、验证

编辑测试页面

[root@localhost]# vi /usr/local/apache2/htdocs/test.php

<?php

echo phpinfo();

?>

在浏览器栏目输入http://x.x.x.x/test.php

linux下php以fastcgi模式运行的更多相关文章

  1. Windows下IIS以FastCGI模式运行PHP

    由于PHP5.3 的改进,原有的IIS 通过isapi 方式解析PHP脚本已经不被支持,PHP从5.3.0 以后的版本开始使用微软的 fastcgi 模式,这是一个更先进的方式,运行速度更快,更稳定. ...

  2. Win2003下IIS以FastCGI模式运行PHP

    由于PHP5.3 的改进,原有的IIS 通过isapi 方式解析PHP脚本已经不被支持,PHP从5.3.0 以后的版本开始使用微软的 fastcgi 模式,这是一个更先进的方式,运行速度更快,更稳定. ...

  3. 如何在安装32位Oracle客户端组件的情况下以64位模式运行

    C#使用System.Data.OracleClient连接Oracle数据库.之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了,错误信息如下:启动data ...

  4. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

  5. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...

  6. 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题

    今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFor ...

  7. “尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。”

    远程连接服务器的数据库调试WCF程序时,可以正常访问数据库,但将程序发布成站点部署在数据库所在的服务器之后,一直报错,通过try/catch捕获得到以下报错信息: System.Exception: ...

  8. Asp.net 程序连接orcle如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,

    本人使用orcale11g 安装orcale 之类以及navicat配置在这里不提,之后会写一篇文章来说明. 到此已经安装和配置navicat访问数据正常,但是运行Asp.net  程序报错 问题如下 ...

  9. Linux下 SpringBoot jar项目后台运行、查看、停用

    运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...

随机推荐

  1. 纯js实现省市级联效果

    我们都知道一般有注册的时候会让用户填入省市啊地区什么的,然后我就想使用纯js制作一个省市级联的效果,只是用于学习以及回顾温习用,首先看下效果图,界面很丑啊,不要嫌弃! 首先还是先看下我的项目目录吧 很 ...

  2. 【转载】Unity3D的断点调试功能

    原文链接:http://liweizhaolili.blog.163.com/blog/static/162307442013214485190/    断点调试功能可谓是程序员必备的功能了.Unit ...

  3. apache web 服务器

    0. 特性与特点 性能方面,apache 在设计时采用了以"进程"为基础的结构,自然进程比线程消耗了更多的系统开销,导致了 apache 在多处理器环境中性能有所下降: 因此,在对 ...

  4. a标签无法传递中文参数问题的解决

    a标签无法传递中文参数问题的解决. 可以通过form表单提交 隐藏域的方法解决. 前台jsp页面: <a class="vsb_buton" href="javas ...

  5. [LeetCode] Scramble String -- 三维动态规划的范例

    (Version 0.0) 作为一个小弱,这个题目是我第一次碰到三维的动态规划.在自己做的时候意识到了所谓的scramble实际上有两种可能的类型,一类是在较低层的节点进行的两个子节点的对调,这样的情 ...

  6. layui 复选框checkbox 全选写法

    前语:本来我是不想写layui框架的博客的,有的时候数据经过layui渲染后原生的写法就取不到值了,一定要用它框架的写法,实在蛋疼,故写之,以后用到可以省点时间去度娘! HTML: <div i ...

  7. APOSE.Cell导入图片

    一:读取EXcel单元格图片 1:读取全部单元格的图片集合  worksheet.pictureCollotion 2:遍历pictureCollotion    (foreach (var  pic ...

  8. JAVA基础--JAVA API常见对象(其他API)13

    一.其他API 1.System类 system类中的方法和成员变量都是静态的, 不需要创建System对象就可以直接使用. /* * 演示System的使用 */ public class Syst ...

  9. E20180601-hm

    trade-off n. 权衡; 交易;(不是商业方面的交易,而是“利”与“弊”的权衡) vertex n. 顶点; 最高点; <数>(三角形.圆锥体等与底相对的)顶; (三角形.多边形等 ...

  10. Android布局中的layout_weight和weightSum属性的详解及使用

    由于Android设备的尺寸大小不一,种类繁多,当我们在开发应用的时候就要考虑屏幕的适配型了,尽可能让我们的应用适用于主流机型的尺寸,这样我们的应用不会因为尺寸不同而不美观,解决屏幕适配问题的方法有很 ...