mod_php和cgi php脚本有什么区别?

时间:2010-05-02 16:05:44

标签: php cgi webserver

mod_php和cgi php脚本有什么区别?

我的意思是,为什么使用mod_php而不是简单的php脚本,将它们作为CGI运行会更好(是吗?)

由于

3 个答案:

答案 0 :(得分:10)

使用CGI时:Apache启动了PHP进程,PHP进程解释PHP代码 - 而不是Apache 本身

理论上,必须为每个请求创建一个独特的PHP进程 - 这会使事情变慢:Apache有更多工作要做以回答请求。
(好吧,正如@AlReece45在评论中指出的那样,使用FastCGI可以做得更好)


当使用PHP作为Apache模块mod_phpmod_php5时,PHP解释器在Apache进程中是一种“ embedded ”:没有外部PHP进程。

这意味着:

  • 不要求回答请求(更快)
  • Apache和PHP之间更好的沟通


一般来说,我会说mod_php是最常用的解决方案。

答案 1 :(得分:3)

普通CGI要求在请求时为每个请求生成进程。

mod_php要求您使用臃肿的apache而不是光滑的nginx或lighttpd。此外,Pascal提到的“Apache和PHP之间更好的通信”可能会损害apache(它会危害任何使用php开发的人!; - ))。

FastCGI允许您将php与Web服务器分开(可能在不同的主机上运行)。

答案 2 :(得分:1)

另外,php.net刚刚发布了一个漏洞,如果您使用mod_cgi运行PHP且PHP版本早于 PHP 5.3.12 ,则可能会泄露源代码。 PHP 5.4.2

http://www.php.net/archive/2012.php#id2012-05-03-1

通过升级或应用mod_rewrite规则进行修补。