2012-09-11 61 views
1

由于臭名昭着的有关“位置”重定向标头的IIS错误,我们必须使用“刷新”标题。可靠地检测PHP脚本是否在IIS下运行

所以,我想知道如果PHP脚本在IIS下运行以编程方式检测的最佳方法。

目前使用的方法是DIRECTORY_SEPARATOR !== '/',但显然Apache和Windows下的其他服务器uncorrectly认定为IIS。

我想过:

strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false

...但这个元素对应于HTTP响应的“服务器”头,而且它可能已经通过各种方式去除。

robuster方法的任何想法?

回答

1

http://www.helicron.net/php/,IIS会留下$ _ SERVER [ 'DOCUMENT_ROOT']空,但Apache将不会。

+0

是的,我也发现了这篇文章,但是这种方法足够安全吗?除Apache和IIS以外的其他服务器的行为如何?最新(和未来)的IIS版本是否仍然会错过这个元素?另外,文章没有过时,但我想它已经写了很长一段时间了。 –

+0

我对此毫不知情,但我只是想在web-app配置中使用简单的变量来定义当前使用的web服务器。 –

相关问题