我在Windows Server 2k3上运行IIS6,目前已经安装了PHP作为ISAPI模块。 我们即将把环境升级到PHP 5.3.0,这让我想知道是否应该坚持使用ISAPI模块,或者是否有理由让CGI更合适。
我们有一个针对我们组织的Web服务器,不必担心与共享主机相关的安全问题; 我们有几个网站,但都属于我们。
使用其中一种方法是否有优势? 更安全吗? 这只是一个偏好问题吗?
编辑:PHP 5.3.0下降支持ISAPI,所以你需要通过FastCGI安装它。 从PHP迁移指南 :
对ISAPI模块的支持已经被删除。 改为使用改进的FastCGI SAPI模块。
用于Windows的非线程安全的 PHP CGI二进制文件应该为您提供最大的稳定性,兼容性和性能:
但是,如果在multithreading环境(如IIS)中使用CGI二进制文件,则性能和稳定性是很容易的。 因此,大多数人已经开始使用可用于IIS 5.1 / IIS 6.0的相对较新的FastCGI扩展作为下载并与IIS7捆绑在一起。
本指南介绍了如何使用Microsoft的FastCGI扩展来安装和configurationPHP CGI。
第二个select是去PHP ISAPI,但一定要(一)使用线程安全构build(二)使用稳定和testing的扩展 – PHP的ISAPI可以以其他方式崩溃并取消IIS。 值得一提的是,PHP的踏面安全性就像一个始终接合的手刹。 有人甚至说这是一个神话。
更新:PHP的ISAPI不再出货,所以关于ISAPI与CGI的问题不再是一个问题了。 build议使用FastCGI。
我个人发现非繁忙的网站(例如平均0-25用户之间)ISAPI工作正常,我发现使用CGI而不是ISAPI没有什么好处。
但是,如果你有一个繁忙的网站,或者不介意做一些工作,我build议你看看FastCGI,现在你可以在Win2003 IIS6上看到它,它在重负载下运行得更快。
与ISAPI模型相比,CGI在IIS上执行得非常差(因为在Windows NT操作系统中创build新的CGI工作stream程非常“昂贵”)。 在IIS的现代版本中,ISAPI的许多“探针”(内存泄漏,需要“回收”应用程序等)是“固定的”,而基于ISAPI的应用程序一般工作得很好,易于pipe理。 任何您发现的原因:基于CGI的应用程序比基于ISAPI的应用程序“更好”可能是用IIS 4.0或IIS 5.0时代的思维方式编写的。