【问题标题】:How to get apache's version?如何获得apache的版本?
【发布时间】:2017-02-03 10:16:00
【问题描述】:

当我尝试在我的网站上运行 apache_get_version() 函数时,我收到一个错误:

致命错误: 未捕获的错误:调用 /srv/www/mywebsite.com/index.php:44 中未定义的函数 apache_get_version() 堆栈跟踪:在 /srv 中抛出 #0 {main} /www/mywebsite.com/index.php 第 44 行

但是这在我的本地主机中有效。 我试过了

function apache_version()
{
    $ver = explode(" ",$_SERVER["SERVER_SOFTWARE"],3);
    return ($ver[0] . " " . $ver[1]);
}
echo apache_version();

这应该在 apache 上回显服务器版本,尽管它不回显版本

【问题讨论】:

  • 该功能仅在 PHP 被编译并安装为普通 Apache 模块时可用。如果不是,那么,就会发生这种情况。
  • Andrew 我在网站上读过,但是如何获得版本?
  • 你必须自己编译它,伙计。见here
  • 安德鲁我不能这样做,因为我无法访问终端
  • 没有办法。使用您在答案中发布的功能。

标签: php apache


【解决方案1】:

来自the introduction to Apache functions

这些函数仅在将 PHP 作为 Apache 模块运行时可用。

如果您将 PHP 作为 CGI/FastCGI 或任何其他 SAPI 运行,则没有可靠的方法来确定 Apache 版本,因为 PHP 与 Apache 的交互最少。如果服务器没有报告它(因此你可以在 $_SERVER 的某个地方读到它),你就不走运了。

你也可以determine how PHP runsphpinfo()

【讨论】:

  • 可以看到Server的API是CGI/FastCGI
【解决方案2】:

也许你可以试试

<?php
echo shell_exec('httpd -version');

【讨论】:

  • 不,它根本不回应任何东西
  • 您使用的是哪个操作系统?
  • Michael 我使用的是 windows,但我相信主机使用的是 Linux
  • 所以你没有终端使用权限?
  • Michael Nope 但我仍然可以运行 shell_exec
【解决方案3】:

您可以使用$_SERVER['SERVER_SOFTWARE'] 来获取您正在运行的网络服务器。正如安德鲁所说,您可以从here 自己编译它。没有办法解决它

【讨论】:

  • 这来自响应标头。如果服务器没有报告它的版本,你只会得到Apache,甚至什么都没有。
【解决方案4】:

要确定您是否可以阅读 Apache 版本,请按照 Álvaro González 的说明创建一个 phpinfo.php 文件。

<?php phpinfo(); ?>

运行该文件,如果 PHP 变量 $_SERVER['SERVER_SOFTWARE'] 列出了一个值,请在您的 PHP 代码中使用以下内容:

$apache_version = $_SERVER['SERVER_SOFTWARE'];
echo "$apache_version";

报告的值取决于配置,可能根本不会列出。否则你可能会得到类似 Apache/2.4.29 (Unix) 或 Apache/2.2.22 (Win64) 等的东西。

【讨论】:

    【解决方案5】:
    echo apache_get_version();
    

    它将打印 Apache 的完整版本详细信息。

    【讨论】:

    猜你喜欢
    • 2018-03-02
    • 2012-04-01
    • 2012-11-11
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 2015-04-20
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多