如果PHP在Apache,Nginx或其他Web服务器上运行,如何检测?[关闭]


12

首先我知道这个变量: _SERVER["SERVER_SOFTWARE"]

在我的一个应用程序中,我想从PHP脚本检查运行它的Web服务器。基本上,它将是一个wordpress插件,它将帮助Blogger进行一些配置。

我为Apache&Nginx创建了单独的流程,并且还在考虑将代码作为2个不同的wordpress插件发布。

然后我只是想知道PHP中是否有一种FULLPROOF方法来完美地检测Web服务器。

请考虑所有情况:: Apache,Nginx,Apache + Nginx,PHP作为Apache模块,使用fastcgi的PHP,php-fpm,lighttpd,IIS等。

对于我的应用程序检测连击和代理的存在也很关键。

谢谢,

-拉胡尔

Answers:


10

简短的回答是,不可能确定性地确定正在使用的Web服务器。最接近的是$ _SERVER [“ SERVER_SOFTWARE”]的值。

可以通过应用程序指纹获得一个很好的主意,即哪个软件在[特定URL]上运行,但这非常非常复杂-它只会告诉您终止HTTP连接的内容-它可能是代理。

您在phpinfo()中看到的内容将不会显示[fast] cgi的网络服务器,而只会显示管理员选择在其他系统上使用的内容。

对于我的应用程序检测连击和代理的存在也很关键。

我不知道你所说的“组合”是什么意思。至于代理……都没有办法说出来。

也许,如果您解释了为什么需要此信息以及它对您有什么价值,那么我们也许能够对可能满足您需求的答案做出更明智的猜测。

C。


用cambo来简单地讲-一些用户选择Nginx作为前端Web服务器,然后使用Apache运行PHP。一种情况是他们想同时运行cpanel和nginx。现在在我的应用程序的一个部分中,我想指导用户使用基于Web服务器的一些复杂的重写规则。在上述apache + nginx情况下,我的PHP脚本将检测到哪个Web服务器?我
rahul286

0

PHP手册站点上的某个人发布了一种将 phpinfo()变量获取到数组中的方法,那里有很多信息,但是Systemphp运行的地方,也许您可​​以使用它。看评论。

另外,检测代理并不是那么容易,您可以使用http标头(如Via),但是有很多方法可能会出错。


感谢您的回答和帮助。我知道通过标头不能被信任,这就是我寻求帮助的原因。
rahul286
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.