Servint 博客上有一篇很棒的文章:http: //blog.servint.net/2011/10/28/the-tech-bench-all-about-php-handlers/
一定要访问那里的网站,它也有比较图表。
PHP 处理程序列表
数字示波器
也称为 mod_php。虽然这是一种较旧的配置,但它的主要优点是速度。它通常被认为是最快的处理程序。它直接从 Apache 运行 PHP,无需将其传递给单独的服务进行处理。这意味着 PHP 脚本将以 Apache 用户身份运行,默认情况下,在我们的服务器上是用户“nobody”。
在切换到 DSO 之前,需要考虑两件事。首先,任何需要由网络服务器写入的文件都必须具有“nobody”用户的写入权限,并且由网络服务器创建的任何文件都将归“nobody”所有。需要通过 PHP 上传文件的网站可能会遇到权限问题,因为设置不像其他处理程序那样明确。这对于通过 WordPress 界面上传文件或利用自动更新功能的 WordPress 用户来说很常见。
关于上述内容的特别说明:文件需要具有 777 模式才能写入是一个常见的误解。这不是真的,而且通常是一个坏主意,因为这意味着文件可以被任何人写入。要使网络服务器可写文件,所需的最高权限应为 664,并由“用户”和组“无人”拥有。对于目录,这将是 775 和 user:nobody。这应该足以让网络服务器写入该位置,而不会使其所有人都可写并引入潜在的关键安全漏洞。
另外,要知道 DSO 提供了与 suPHP/FastCGI 不同的安全类型。由于服务器以“无人”身份运行它,任何能够利用服务器上的文件来获得提升权限的人都可以访问网络服务器可以直接访问的任何其他文件。这仅仅意味着入侵者可以访问多个帐户的文件,但只能访问那些“无人”拥有的文件。请参阅下面的安全部分了解更多信息。
DSO 的主要优势是速度和资源使用率。安装了 eAccelerator 或 APC 等操作码缓存扩展后,DSO 将比其他处理程序运行得更快且占用空间更小。这也是我们服务器上的默认设置。
一个好的经验法则是,DSO 最适合运行一两个大型、高性能网站的服务器,这些网站需要考虑效率和速度。
电脑动画
CGI 处理程序将 PHP 作为 CGI 模块而不是 Apache 模块运行。CGI 方法旨在作为 DSO 不可用时的后备处理程序。无论是否启用 suEXEC,这种方法既不快速也不安全。因此 ServInt 不推荐使用 CGI。
苏PHP
suPHP 将 PHP 作为单独的服务运行,然后将编译后的代码传递回 Apache 以供服务。它在技术上是一个 CGI 模块,但是它与上面提到的 CGI 处理程序有很大不同。使用 suPHP 的主要区别和优势在于,启用 suEXEC 后,它会以调用它们的用户身份运行 PHP 脚本,而不是以“nobody”用户身份运行。例如,如果帐户归用户 Spock 所有,则为该用户网站提供服务的所有 Apache 实例都将以用户 Spock 身份运行。这里的优点是它可以更轻松地跟踪使用过多资源的网站。
以用户身份运行进程的另一个优点是它简化了整体权限方案。网络服务器将能够写入用户拥有的文件,而不仅仅是“没人”。从长远来看,这意味着许多 CMS 解决方案中的自动更新/安装功能将更容易工作,并且文件/目录的一般权限更加明确:644 并由用户和组用户拥有文件,同样 755 和 user:user 用于目录。
suPHP 和 DSO 之间的安全差异在于 suPHP 将入侵者限制在他/她影响的特定用户中。该漏洞利用不能跨帐户,但它可以影响用户拥有的每个文件,而不仅仅是网络服务器可写的文件。请参阅下面的安全部分了解更多信息。
suPHP 的主要缺点是速度和 CPU 负载。suPHP 的运行速度比其他处理程序慢得多,当切换到它时,您会看到整体 CPU 负载显着增加。suPHP 也不能与诸如 eAccelerator 或 APC 之类的操作码缓存扩展一起使用,这也是 CPU 使用率增加的部分原因。因此,如果您将其与 CMS 一起使用,建议您实现一个缓存插件,例如用于 WordPress 的 W3-Total-Cache。对于较小的经销商客户,更推荐使用此处理程序。这是因为它将漏洞利用锁定到一个受影响的帐户,并且对于不太繁忙的站点或少量单个 cPanel 帐户,CPU 负载增加不会那么显着。
快速CGI
FastCGI(又名:mod_fcgid)与 suPHP 类似,因为它是一个单独的进程,用于编译 PHP,然后将其发送回 Apache。它也是一个 CGI 模块,这意味着启用了 suEXEC 的 PHP 以用户身份运行该进程。这允许您获得与上述 suPHP 相同的权限优势。然而,两者之间的区别在于它们如何控制 PHP 进程。suPHP 会在每次需要编译 PHP 进程时运行,而 FastCGI 保持打开的持久连接可以被同一个 PHP 进程调用。这允许您使用诸如 eAcceleartor 或 APC 之类的操作码缓存扩展来提高性能。
缺点是 FastCGI 的内存使用率很高。由于上面提到的持久连接存储在内存中,您将看到更多可用内存被 FastCGI 占用。
FastCGI 和 suPHP 的一个很好的类比是想一本书有几章。使用 suPHP,这本书将没有目录,也没有索引,所以每次你想找到一些东西时,你都必须翻阅这本书才能得到它。这需要时间(增加 CPU 使用率)并且速度很慢。借助 FastCGI,本书具有丰富的索引和目录,因此您可以快速轻松地找到您要查找的内容;然而,这些额外的页面使这本书变得更厚(增加了内存使用)。