如何检测 PHP 是否在 Apache、Nginx 或其他 Web 服务器上运行?

如何检测 PHP 是否在 Apache、Nginx 或其他 Web 服务器上运行?

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

在我的一个应用程序中,我想通过 PHP 脚本检查它在哪个 Web 服务器上运行。基本上它将是一个 wordpress 插件,可帮助 Bloggers 调整一些配置。

我已经为 Apache 和 Nginx 创建了单独的进程,并且还考虑将代码作为两个不同的 wordpress 插件发布。

然后我很好奇想知道 PHP 中是否存在一种万无一失的方法可以完美地检测网络服务器。

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

对于我的应用程序来说,检测组合和代理的存在也至关重要。

谢谢,

-拉胡尔

答案1

简而言之,无法确定正在使用哪个 Web 服务器。最接近的答案是 $_SERVER["SERVER_SOFTWARE"] 的值。

通过应用程序指纹识别,可以很好地了解在特定 URL 上运行的软件,但这非常非常很复杂 - 而且它只会告诉您是什么终止了 HTTP 连接 - 它可能是一个代理。

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

对于我的应用程序来说,检测组合和代理的存在也至关重要。

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

也许如果你解释一下为什么您需要这些信息以及它对您有什么价值,那么我们也许能够对可能适合您需求的答案做出更明智的猜测。

C。

答案2

有人在 PHP 手册网站上发布了一个获取方式 phpinfo()变量放入数组中,那里有很多信息,还有Systemphp 运行的位置,也许您可​​以使用它。看看评论。

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

相关内容