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

rah*_*286 14 php nginx web-server apache-2.2

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

在我的一个应用程序中,我想从 PHP 脚本中检查它正在运行的网络服务器。基本上它将是一个 wordpress 插件,它将帮助博主调整一些配置。

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

然后我很想知道 PHP 中是否有一种 FULLPROOF 方法可以完美地检测网络服务器。

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

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

谢谢,

-拉胡尔

sym*_*ean 10

简短的回答是不可能确定性地识别正在使用的网络服务器。最接近的是 $_SERVER["SERVER_SOFTWARE"] 的值。

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

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

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

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

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

C。


cor*_*ump 0

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

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