2010-04-06 62 views
1

我正在編寫一個Apache模塊,並希望獲取帶有Apache名稱版本和其他詳細信息的字符串。很像是被添加到輸出頭,例如:獲取當前用於顯示的Apache版本字符串

Server: Apache/2.2.13 (Win32) 

我已經試過這樣的代碼:

apr_table_get(request_rec->headers_out,"Server") 

但是,這似乎並沒有工作。有沒有找到一個API調用,或我註定要從httpd.exe獲取版本資源數據?

回答

0

試試這個命令

apache2 -v 

應該打印出來的東西像這樣

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

大多數UNIX命令有一個-v選項

它看起來像你正試圖從PHP得到它,php中的exec命令將讓你運行服務器上的命令。

+0

我沒有從PHP運行此。我不想啓動額外的進程,並且希望從Apache API獲得它。 – 2010-04-07 21:09:11

0

我不是確定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函數返回值一個字符串。

+0

nope,我檢查過GetEnvironmentStrings,沒有像SERVER_SOFTWARE,或者任何有關Apache的版本信息。請注意,我正在開發一個Apache模塊,它與CGI完全不同。 – 2010-04-07 21:34:51