获取PHP中的Web服务器版本

lqfhib0f  于 2023-09-29  发布在  PHP
关注(0)|答案(5)|浏览(138)

我想一个Web服务器的版本(Nginx,MySQL,MariaDB,...)在PHP.
我知道Apache的功能:apache_get_version()。有很多phpinfo()返回所有值,但如何利用?
你会有一个想法或它是不可能的时刻?

nnt7mjpx

nnt7mjpx1#

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

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

请注意,nginx将版本输出发送到stderr,因此您需要将其通过管道发送到stdout以捕获它。

isr3a4wc

isr3a4wc2#

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

$_SERVER['SERVER_SIGNATURE']

根据PHP文档:

SERVER_SIGNATURE

包含服务器版本和虚拟主机名的字符串,如果已启用,则会将其添加到服务器生成的页中。
您可以在官方PHP文档网站上找到更多信息:http://php.net/manual/en/reserved.variables.server.php

jdg4fx2g

jdg4fx2g3#

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

// 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.

gijlo24d

gijlo24d4#

寻址$_SERVER超全局http://php.net/manual/en/reserved.variables.server.php
我相信你想要的设置是:

echo $_SERVER['SERVER_NAME'];
q3qa4bjr

q3qa4bjr5#

要在PHP中查询MySQL和/或MariaDB的版本,您可以使用mysqli_get_server_info()或(如果您仍然使用在PHP 5.5.0中不推荐使用并在PHP 7.0.0中删除的旧版mysql API)mysql_get_server_info()。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);
?>

相关问题