【问题标题】:Get the web server version in PHP用 PHP 获取 Web 服务器版本
【发布时间】:2016-08-25 20:26:50
【问题描述】:

我想要 PHP 版本的 Web 服务器(Nginx、MySQL、MariaDB...)。

我知道 Apache 的函数:apache_get_version()。 有很多phpinfo()返回所有值但是如何利用呢?

你有想法还是暂时不可能?

【问题讨论】:

    标签: php server


    【解决方案1】:

    一个简单的shell_exec 就可以解决问题(假设您在基于unix 的服务器上)。只是不要将任何用户数据放入命令中,并注意这种方法可能不适用于共享托管环境:

    $nginxVersion = shell_exec('nginx -v 2>&1');
    $mysqlVersion = shell_exec('mysql --version');
    

    请注意nginx sends version output to stderr,因此您需要将其通过管道传输到标准输出以捕获它。

    【讨论】:

      【解决方案2】:

      您可以使用 $_SERVER 超全局变量检索 Web 服务器的版本,更具体地说,可以使用:

       $_SERVER['SERVER_SIGNATURE']
      

      根据 PHP 文档:

      SERVER_SIGNATURE

      包含添加到服务器生成页面的服务器版本和虚拟主机名的字符串(如果启用)。

      您可以在官方 PHP 文档网站上找到更多信息: http://php.net/manual/en/reserved.variables.server.php

      【讨论】:

        【解决方案3】:

        要在 PHP 中查询 MySQL 和/或 MariaDB 的版本,您可以使用 mysqli_get_server_info() 或(如果您仍在使用已弃用的旧 mysql API)mysql_get_server_info()。 PDO API 没有用于此目的的类似函数或类,但在这种情况下,您可以只使用 SQL 查询的结果

        SELECT VERSION();
        

        它返回类似5.5.50-0+deb7u2 的内容。这是一个简单的例子:

        <?php
          $user = 'username_here';
          $pass = 'your_db_password';
          // create DB connection
          $dbh = new PDO('mysql:host=localhost;dbname=mysql', $user, $pass);
          $stmt = $dbh->query('SELECT VERSION();');
          //fetch first column of first result row and print it out
          echo $stmt->fetchColumn();
          //unset PDOStatement and PDO to close DB connection
          unset($stmt);
          unset($dbh);
        ?>
        

        【讨论】:

          【解决方案4】:

          地址$_SERVER超全局http://php.net/manual/en/reserved.variables.server.php

          我相信你想要的设置是:

          echo $_SERVER['SERVER_NAME'];
          

          【讨论】:

          • 感谢您的回答。这一次,$_SERVER['SERVER_SOFTWARE'] 对我来说只适用于 Web 服务器。
          【解决方案5】:

          其他答案提到了如何获取网络服务器和数据库版本的不同方法,但是有一个函数可以获取操作系统本身。

          // Gets the "System" row shown at the top of the `phpinfo()` table.
          $system = php_uname( $mode = 'a' );
          

          您可以指定模式以选择不同的组件。默认情况下,它将按以下顺序显示所有组件,以空格分隔:

          • s:操作系统名称
          • n:主机名
          • r:版本名称
          • v:版本信息
          • m:机器类型

          You can view more information about the php_uname function here.

          【讨论】:

            猜你喜欢
            • 2020-11-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-25
            • 1970-01-01
            • 1970-01-01
            • 2011-11-18
            相关资源
            最近更新 更多