我正在編寫一個Apache模塊,並希望獲取帶有Apache名稱版本和其他詳細信息的字符串。很像是被添加到輸出頭,例如:獲取當前用於顯示的Apache版本字符串
Server: Apache/2.2.13 (Win32)
我已經試過這樣的代碼:
apr_table_get(request_rec->headers_out,"Server")
但是,這似乎並沒有工作。有沒有找到一個API調用,或我註定要從httpd.exe獲取版本資源數據?
我正在編寫一個Apache模塊,並希望獲取帶有Apache名稱版本和其他詳細信息的字符串。很像是被添加到輸出頭,例如:獲取當前用於顯示的Apache版本字符串
Server: Apache/2.2.13 (Win32)
我已經試過這樣的代碼:
apr_table_get(request_rec->headers_out,"Server")
但是,這似乎並沒有工作。有沒有找到一個API調用,或我註定要從httpd.exe獲取版本資源數據?
發現:ap_get_server_version,我HTTPD2 API包裝缺少這個聲明
試試這個命令
apache2 -v
應該打印出來的東西像這樣
Server version: Apache/2.2.11 (Ubuntu)
Server built: Mar 9 2010 21:05:51
大多數UNIX命令有一個-v選項
它看起來像你正試圖從PHP得到它,php中的exec命令將讓你運行服務器上的命令。
我不是確定Apache模塊,但對於CGI腳本,當前Web服務器的名稱存儲在SERVER_SOFTWARE
環境變量中。例如,在Perl中,您將使用$ENV{SERVER_SOFTWARE}
來閱讀它。在C中,您將使用getenv ("SERVER_SOFTWARE")
。
爲了找出服務器軟件,爲什麼不直接通過Apache源代碼grep來找到它的定義。
與Apache 1.3.41這樣做,我覺得這是在上線240叫util_script.c
文件中定義如下:
ap_table_addn(e, "SERVER_SOFTWARE", ap_get_server_version());
它看起來像有一個叫ap_get_server_version
函數返回值一個字符串。
nope,我檢查過GetEnvironmentStrings,沒有像SERVER_SOFTWARE,或者任何有關Apache的版本信息。請注意,我正在開發一個Apache模塊,它與CGI完全不同。 – 2010-04-07 21:34:51
我沒有從PHP運行此。我不想啓動額外的進程,並且希望從Apache API獲得它。 – 2010-04-07 21:09:11