我正在编写一个Apache模块,希望获得一个包含Apache名称版本和其他详细信息的字符串。很像添加到传出标题的内容,例如:
Server: Apache/2.2.13 (Win32)
我尝试过这样的代码:
apr_table_get(request_rec->headers_out,"Server")
但这似乎不起作用。是否有我未找到的API调用,或者我注定要从httpd.exe获取版本资源数据?
答案 0 :(得分:0)
尝试此命令
apache2 -v
应打印出类似这样的内容
Server version: Apache/2.2.11 (Ubuntu)
Server built: Mar 9 2010 21:05:51
大多数unix命令都有-v选项
看起来你正试图从php中获取它,php中的exec命令会让你在服务器上运行命令答案 1 :(得分:0)
我不确定Apache模块,但对于CGI脚本,当前Web服务器的名称存储在SERVER_SOFTWARE
环境变量中。例如,在Perl中,您可以使用$ENV{SERVER_SOFTWARE}
来读取它。在C中,您将使用getenv ("SERVER_SOFTWARE")
。
为了找到服务器软件,为什么不只是通过Apache源代码来查找定义的位置。
使用Apache 1.3.41执行此操作时,我发现它在第240行的名为util_script.c
的文件中定义如下:
ap_table_addn(e, "SERVER_SOFTWARE", ap_get_server_version());
看起来有一个名为ap_get_server_version
的函数,它将值作为字符串返回。
答案 2 :(得分:0)
找到它:ap_get_server_version,我的HTTPD2 API包装器缺少此声明