首先我知道这个变量:_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()
变量放入数组中,那里有很多信息,还有System
php 运行的位置,也许您可以使用它。看看评论。
此外,检测代理并不是那么容易,您可以使用 http 标头(如Via
),但有很多方法可能会出错。