插件窝 干货文章 php如何判断是apache还是nginx

php如何判断是apache还是nginx

SERVER 服务器 Apache 方法 863    来源:    2025-04-25

判断PHP运行在Apache还是Nginx服务器上的方法

在PHP中,有几种方法可以判断当前运行在Apache还是Nginx服务器环境下:

方法一:检查$_SERVER['SERVER_SOFTWARE']变量

if (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) {
    echo '运行在Apache服务器上';
} elseif (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) {
    echo '运行在Nginx服务器上';
} else {
    echo '运行在其他服务器上: ' . $_SERVER['SERVER_SOFTWARE'];
}

方法二:检查apache_get_version()函数是否存在

if (function_exists('apache_get_version')) {
    echo '运行在Apache服务器上';
} else {
    echo '可能运行在Nginx或其他服务器上';
}

方法三:检查特定的服务器变量

if (isset($_SERVER['SERVER_SIGNATURE']) && strpos($_SERVER['SERVER_SIGNATURE'], 'Apache') !== false) {
    echo 'Apache服务器';
} elseif (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) {
    echo 'Nginx服务器';
}

方法四:使用php_sapi_name()函数

$sapi = php_sapi_name();
if ($sapi == 'apache2handler') {
    echo 'Apache服务器';
} elseif ($sapi == 'fpm-fcgi') {
    // 可能是Nginx + PHP-FPM
    if (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) {
        echo 'Nginx服务器';
    }
} else {
    echo '其他服务器类型: ' . $sapi;
}

注意事项

  1. 这些方法在大多数情况下有效,但不是100%可靠
  2. 在共享主机环境下,服务器信息可能被隐藏或修改
  3. 最可靠的方法是结合多种检查方式
  4. 如果使用PHP-FPM,php_sapi_name()会返回'fpm-fcgi',这时需要结合其他方法判断

您可以根据实际需求选择最适合的方法来判断服务器类型。