【发布时间】:2016-08-25 20:26:50
【问题描述】:
我想要 PHP 版本的 Web 服务器(Nginx、MySQL、MariaDB...)。
我知道 Apache 的函数:apache_get_version()。
有很多phpinfo()返回所有值但是如何利用呢?
你有想法还是暂时不可能?
【问题讨论】:
我想要 PHP 版本的 Web 服务器(Nginx、MySQL、MariaDB...)。
我知道 Apache 的函数:apache_get_version()。
有很多phpinfo()返回所有值但是如何利用呢?
你有想法还是暂时不可能?
【问题讨论】:
一个简单的shell_exec 就可以解决问题(假设您在基于unix 的服务器上)。只是不要将任何用户数据放入命令中,并注意这种方法可能不适用于共享托管环境:
$nginxVersion = shell_exec('nginx -v 2>&1');
$mysqlVersion = shell_exec('mysql --version');
请注意nginx sends version output to stderr,因此您需要将其通过管道传输到标准输出以捕获它。
【讨论】:
您可以使用 $_SERVER 超全局变量检索 Web 服务器的版本,更具体地说,可以使用:
$_SERVER['SERVER_SIGNATURE']
根据 PHP 文档:
SERVER_SIGNATURE
包含添加到服务器生成页面的服务器版本和虚拟主机名的字符串(如果启用)。
您可以在官方 PHP 文档网站上找到更多信息: http://php.net/manual/en/reserved.variables.server.php
【讨论】:
要在 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);
?>
【讨论】:
地址$_SERVER超全局http://php.net/manual/en/reserved.variables.server.php
我相信你想要的设置是:
echo $_SERVER['SERVER_NAME'];
【讨论】:
其他答案提到了如何获取网络服务器和数据库版本的不同方法,但是有一个函数可以获取操作系统本身。
// Gets the "System" row shown at the top of the `phpinfo()` table.
$system = php_uname( $mode = 'a' );
您可以指定模式以选择不同的组件。默认情况下,它将按以下顺序显示所有组件,以空格分隔:
You can view more information about the php_uname function here.
【讨论】: