IIS 上的 PHP 安装:ISAPI 还是 CGI?

Jac*_*ume 7 iis php iis-6 php5

我在 Windows Server 2k3 上运行 IIS6,目前已将 PHP 安装为 ISAPI 模块。我们即将将我们的环境升级到 PHP 5.3.0,这让我想知道我是否应该坚持使用 ISAPI 模块,或者是否有理由让 CGI 更适合。

我们的组织有一台网络服务器,不必担心与共享主机相关的安全问题;我们有几个网站,但它们都属于我们。

使用一种方法比另一种方法有优势吗?一个更安全吗?这只是一个偏好问题吗?

编辑:PHP 5.3.0 放弃了对 ISAPI 的支持,因此您需要通过 FastCGI 安装它。来自PHP 迁移指南

已取消对 ISAPI 模块的支持。请改用改进的 FastCGI SAPI 模块。

Wil*_*sum 6

我个人发现对于非繁忙的网站(例如平均在 0-25 个用户之间)ISAPI 工作正常,我发现在 ISAPI 上使用 CGI 没有什么好处。

但是,如果您有一个繁忙的网站或不介意在其中投入一些工作,我建议您查看 FastCGI,因为您现在可以在 Win2003 IIS6 上获得它,它在重负载下运行速度要快得多。

http://www.iis.net/extensions/FastCGI


Sal*_*n A 6

适用于 Windows的非线程安全PHP CGI 二进制文件应该为您提供最大的稳定性、兼容性和性能,因为:

  1. PHP 最初是为多进程环境设计和优化的
  2. 大多数扩展的创建都牢记这一点
  3. 在多线程环境中没有您看到的“等待”

但是,在 IIS 等多线程环境中使用 CGI 二进制文件时,性能和稳定性会受到影响。因此,大多数人已经开始使用相对较新的FastCGI扩展,该扩展可用于 IIS 5.1/IIS 6.0 作为下载并与 IIS7 捆绑在一起。

本指南解释了如何使用 Microsoft 的 FastCGI 扩展安装和配置 PHP CGI。

第二种选择是使用 PHP ISAPI,但一定要 (i) 使用线程安全构建 (ii) 使用稳定且经过测试的扩展——否则 PHP ISAPI 可能会崩溃并关闭 IIS。附带说明一下,PHP 中的胎面安全就像一个始终处于接合状态的手刹;有些人甚至说这是一个神话。

更新:PHP ISAPI 不再发布,所以关于 ISAPI 与 CGI 的问题不再是一个问题。推荐使用 FastCGI。

  1. FastCGI 支持内置于现代版本的 IIS 中,您只需要启用它。
  2. PHP 安装程序提供了使用 FastCGI 安装 PHP 的选项。
  3. 对于想要执行 ZIP 安装的人,可以使用“PHP Manager for IIS”来配置带有 IIS 的 PHP 安装。


Eva*_*son 5

与 ISAPI 模型相比,CGI 在 IIS 上的性能非常差(因为在 Windows NT 派生的操作系统中创建新进程,这是 CGI 的工作方式,非常“昂贵”)。在现代版本的 IIS 中,ISAPI 的许多“问题”(内存泄漏、需要“回收”应用程序等)都是“固定的”,基于 ISAPI 的应用程序通常工作得很好并且易于管理。您发现的任何理由是:基于 CGI 的应用程序比基于 ISAPI 的应用程序“更好”,很可能是用 IIS 4.0 或 IIS 5.0 时代的思维方式编写的。