Apache以FastCGI模式运行PHP

本文介绍了如何在Apache服务器上通过FastCGI模式运行PHP,并对比了ISAPI模式,突出了其在稳定性、性能和安全性方面的优势。同时,也提到了FastCGI模式下调试的难点及在Windows平台上的潜在安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ISAPI 模式运行 PHP 的,这种方式最大的缺点就是稳定性不好,当 PHP 出错的时候,Apache进程也死掉了。后来看到网上关于 PHP 以 FastCGI 模式运行的介绍,其中提到的种种好处(稳定、安全、高性能)让我决定尝试一下。

 

下载用于 Apache 的 mod_fastcgi。我使用的是 mod_fastcgi-2.4.2-AP20.dll(因为我的Apache是2.0)。下载后将这个文件复制到 Apache 的 modules 目录中。将mod_fastcgi-2.4.2-AP20.dll改名为mod_fastcgi.dll。

然后修改 httpd.conf 文件,加入下面几行:

LoadModule fastcgi_module modules/mod_fastcgi.dll

#FastCgiConfig -maxClassProcesses 150 -maxProcesses 350 -idle-timeout 30
ScriptAlias /fastcgi-bin/ "D:/Program Files/Apache Software Foundation/php5/"
FastCgiServer "D:/Program Files/Apache Software Foundation/php5/php-cgi.exe" -processes 4
AddType application/x-httpd-fastphp5 .php
#AddHandler fastcgi-script .php
#FastCgiExternalServer "D:/Program Files/Apache Software Foundation/php5/php-cgi.exe"
Action application/x-httpd-fastphp5 "/fastcgi-bin/php-cgi.exe"

修改完成后,重新启动 Apache 即可。

FastCGI 模式运行 PHP 的优点:
以 FastCGI 模式运行 PHP 有几个主要的好处。首先就是 PHP 出错的时候不会搞垮 Apache,只是 PHP 自己的进程当掉(但 FastCGI 会立即重新启动一个新 PHP 进程来代替当掉的进程)。其次 FastCGI 模式运行 PHP 比 ISAPI 模式性能更好(我本来用 ApacheBench 进行了测试,但忘了保存结果,大家有兴趣可以自己测试)。

最后,就是可以同时运行 PHP5 和 PHP4。参考下面的配置文件,分别建立了两个虚拟主机,其中一个使用 PHP5,另一个使用 PHP4。

LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP13.dll

ScriptAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -processes 3
ScriptAlias /fcgi-php4/ "d:/usr/local/php-4.3.11/"
FastCgiServer "d:/usr/local/php-4.3.11/php.exe"

Listen 80
NameVirtualHost *:80

DocumentRoot d:/www
Options Indexes FollowSymlinks MultiViews
ServerName php5.localhost

AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"


IndexOptions FancyIndexing FoldersFirst
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all

 

Listen 8080
NameVirtualHost *:8080


DocumentRoot d:/www
Options Indexes FollowSymlinks MultiViews
ServerName php4.localhost

AddType application/x-httpd-fastphp4 .php
Action application/x-httpd-fastphp4 "/fcgi-php4/php.exe"


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all


使用上面的配置,访问 http://localhost/ 就使用 PHP5,而访问 http://localhost:8080/ 就使用 PHP4。所以只要合理配置,就可以让不同的虚拟主机使用不同版本的 PHP。

FastCGI 模式的一些缺点:
说完了好处,也来说说缺点。从实际使用来看,用 FastCGI 模式更适合生产环境的服务器。但对于开发用机器来说就不太合适。因为当使用 Zend Studio 调试程序时,由于 FastCGI 会认为 PHP 进程超时,从而在页面返回 500 错误。这一点让人非常恼火,所以我在开发机器上还是换回了 ISAPI 模式。

最后,在 Windows 中以 FastCGI 模式存在潜在的安全漏洞。因为我还没有找到如何在 Windows 环境下实现 SuEXEC 的方法,因此 PHP 的进程总是以最高权限运行,这从安全角度来看显然不是个好消息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值