Получить строку текущей версии Apache для отображения - PullRequest
1 голос
/ 07 апреля 2010

Я пишу модуль Apache и хочу получить строку с версией имени Apache и другими деталями.Очень похоже на то, что добавляется к исходящим заголовкам, например:

Server: Apache/2.2.13 (Win32)

Я пробовал код, подобный этому:

apr_table_get(request_rec->headers_out,"Server")

Но, похоже, это не работает.Есть ли вызов API, которого я не нашел, или я обречен на получение данных о версии ресурса от httpd.exe?

Ответы [ 3 ]

0 голосов
/ 07 апреля 2010

Я не уверен насчет модулей Apache, но для сценариев CGI имя текущего веб-сервера хранится в переменной среды SERVER_SOFTWARE. Например, в Perl вы бы использовали $ENV{SERVER_SOFTWARE} для его чтения. В C вы бы использовали getenv ("SERVER_SOFTWARE").

Для того, чтобы узнать серверное программное обеспечение, почему бы просто не поискать исходные коды Apache, чтобы найти, где это определено.

Делая это с Apache 1.3.41, я обнаружил, что он определен в файле с именем util_script.c в строке 240 следующим образом:

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

Похоже, есть функция с именем ap_get_server_version, которая возвращает значение в виде строки.

0 голосов
/ 08 апреля 2010

Нашел: ap_get_server_version , моя оболочка HTTPD2 API пропустила это объявление

0 голосов
/ 07 апреля 2010

попробуйте эту команду

apache2 -v

должен распечатать что-то вроде этого

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

большинство команд unix имеют опцию -v

похоже, что вы пытаетесь получить его из php, команда exec в php позволит вам запустить команду на сервере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...