代码之家  ›  专栏  ›  技术社区  ›  Stijn Sanders

获取要显示的当前apache版本字符串

  •  1
  • Stijn Sanders  · 技术社区  · 15 年前

    我正在编写一个apache模块,希望得到一个包含apache名称版本和其他详细信息的字符串。非常类似于添加到传出邮件头的内容,例如:

    Server: Apache/2.2.13 (Win32)
    

    我试过这样的代码:

    apr_table_get(request_rec->headers_out,"Server")
    

    但这似乎行不通。是否有一个api调用我没有找到,或者我注定要从httpd.exe获取版本资源数据?

    3 回复  |  直到 15 年前
        1
  •  0
  •   imightbeinatree at Cloudspace    15 年前

    试试这个命令

    apache2 -v
    

    应该打印出这样的东西

    Server version: Apache/2.2.11 (Ubuntu)
    Server built:   Mar  9 2010 21:05:51
    

    大多数unix命令都有一个-v选项

    看起来您正试图从php获取它,php中的exec命令将允许您在服务器上运行该命令

        2
  •  0
  •   Stijn Sanders    15 年前

    找到它: ap_get_server_version ,我的httpd2 api包装缺少此声明

        3
  •  0
  •   user181548    15 年前

    我不确定apache模块,但是对于cgi脚本,当前web服务器的名称存储在 SERVER_SOFTWARE 环境变量。例如,在Perl中,您可以使用 $ENV{SERVER_SOFTWARE} 阅读它。在C语言中,你可以使用 getenv ("SERVER_SOFTWARE") .

    为了找到服务器软件,为什么不直接通过grep通过apache源代码来找到它的定义。

    在apache 1.3.41中执行此操作时,我发现它是在一个名为 util_script.c 在240线上,如下所示:

    ap_table_addn(e, "SERVER_SOFTWARE", ap_get_server_version());
    

    好像有一个函数 ap_get_server_version 以字符串形式返回值。