PHP 作为 CGI 还是 Apache 模块?

Ion*_*tan 6 php installation cgi apache-2.2

我一直认为 PHP 作为 Apache 模块安装效果更好,但最近,本地论坛上有人指出,将 PHP 作为 CGI 运行在安全性方面更好。我已经做了一些谷歌搜索,似乎Dreamhost 将其 PHP 安装默认为通过 CGI 工作。现在我有点困惑。

据我所知(我不是系统管理员,只是一个 Web 开发人员),当 PHP 作为 Apache 模块安装时存在用户权限问题。通过 CGI 使用 PHP 时存在速度问题(或者曾经是)。

现在安装 PHP 的推荐方法是什么?在共享和专用主机上。

Dav*_*ett 7

将 PHP 作为模块运行通常更有效,但这意味着所有脚本都在同一个用户帐户(Apache 运行的任何帐户)下运行,这可能会在共享环境中引起安全问题。

CGI 慢得多,因为它为每个需要的请求启动一个新的 PHP 进程,但可以配置为以拥有它的用户身份运行每个脚本,这在共享环境中可以更加安全。

FastCGI 设置起来可能更麻烦,但接近作为 PHP 模块运行的速度。


Dan*_*ley 5

一般来说,您想要运行 CGI 的唯一原因是在共享环境中。

这允许您拥有 suEXEC 风格(请参阅:suPHP)的安排,其中脚本仅作为所有者的 UID/GID 执行,并且对文件系统上的任何其他内容具有有限的权限。

否则 mod_php 效率更高,而且通常更容易调试。