<-
Apache > HTTP Server > 文件 > 2.4 版 > 模組

Apache 模組 mod_so

可用的語言:  en  |  fr  |  ja  |  ko  |  tr 

說明在啟動或重新啟動時載入可執行碼和模組至伺服器
狀態擴充功能
模組識別碼so_module
原始檔mod_so.c
相容性這是 Windows 上的基本模組(總是包含)

摘要

在特定的作業系統上,此模組可用於透過 動態共用物件 (DSO) 機制將模組載入 Apache HTTP Server 中,而無需重新編譯。

在 Unix 上,載入的代碼通常來自共用物件檔(通常附檔名為 .so),在 Windows 上,它可能是 .so.dll 附檔名。

警告

為一個主要版本的 Apache HTTP Server 所建置的模組通常無法在另一個版本中使用。(例如 1.3 與 2.0,或 2.0 與 2.2)一個主要版本與另一個版本之間通常會有 API 的變更,這表示模組需要修改才能與新版本一起執行。

Support Apache!

主題

指令

錯誤修正檢查表

另請參閱

top

為 Windows 建立可載入模組

注意事項

在 Windows 上,可載入檔案通常具有 .dll 檔案附檔名,Apache httpd 模組稱為 mod_whatever.so,就像在其他平台上一樣。但是,您可能會遇到第三方的模組,例如 PHP,它們會繼續使用 .dll 約定。

儘管 mod_so 仍載入具有 ApacheModuleFoo.dll 名稱的模組,但建議使用新的命名約定;如果您正在轉換 2.0 的可載入模組,請將名稱修復為此 2.0 約定。

Apache httpd 模組 API 在 Unix 和 Windows 版本之間保持不變。許多模組可以在 Windows 上執行,而不會做或僅會做少量的 Unix 變更,儘管其他模組依賴 Windows 中沒有的 Unix 架構方面,而且無法正常執行。

當某模組運作時,將會透過兩種方式之一加到伺服器中。與 Unix 相同,可將它編譯進伺服器中。由於适用于 Windows 的 Apache httpd 不具備適用於 Unix 的 Apache httpd 的 Configure 程式,因此模組的來源檔案必須加到 ApacheCore 專案檔案中,其符號也必須加到 os\win32\modules.c 檔案中。

第二種方式是將模組編譯成 DLL,一種類似於共用函式庫的函式庫,可用於在執行階段載入到伺服器中,方法是使用 LoadModule 指令。這些模組 DLL 可分散於任何 Apache httpd for Windows 安裝並執行,而不需要重新編譯伺服器。

若要建立模組 DLL,模組的來源檔需要進行微調:必須從 DLL 匯出模組記錄(稍後會建立,如下所述)。要執行此項作業,請將 AP_MODULE_DECLARE_DATA(在 Apache httpd 標頭檔案中定義)加到模組的模組記錄定義中。例如,如果模組具有

module foo_module;

請使用以下內容取代上述內容

module AP_MODULE_DECLARE_DATA foo_module;

請注意,這只會在 Windows 上啟用,如此便可繼續在 Unix 上使用模組,而且無需變更。此外,如果您熟悉 .DEF 檔案,也可以用該方法來匯出模組記錄。

現在,建立一個包含模組的 DLL。您需要將它連結至編譯 Apache httpd 共用函式庫 libhttpd.dll 時所建立的 libhttpd.lib 匯出函式庫。您可能也需要變更編譯器設定,以確保正確找到 Apache httpd 標頭檔案。您可在伺服器根目錄的 modules 目錄中找到此函式庫。最好的方式是从結構中擷取現有的模組 .dsp 檔案,以確保建置環境正確設定,或者比較 .dsp 的編譯器和連結選項。

這應該會建立模組的 DLL 版本。現在,只要將它放在伺服器根目錄的 modules 目錄中,並使用 LoadModule 指令來載入它。

top

LoadFile 指令

說明在指定的物件檔或函式庫中建立連結
語法LoadFile filename [filename] ...
情境伺服器設定、虛擬主機
狀態擴充功能
模組mod_so

LoadFile 指令在啟動或重新啟動伺服器時,會在指定的物件檔或函式庫中建立連結。這個指令是為了載入某些模組運作可能需要的額外代碼。Filename 是絕對路徑或相對於 ServerRoot 的路徑。

例如

LoadFile "libexec/libxmlparse.so"
top

LoadModule 指令

說明在物件檔或函式庫中建立連結,並加到活動模組清單中
語法LoadModule module filename
情境伺服器設定、虛擬主機
狀態擴充功能
模組mod_so

LoadModule 指示載入目標檔或程式庫 檔名,並將名為 模組 的模組結構加入至目前的模組清單。模組 是外部變數的名稱,類型為檔案中的 module,並在模組文件當中,列為 模組識別碼

例如

LoadModule status_module "modules/mod_status.so"

從 ServerRoot 的模組子目錄載入已命名的模組。

可用的語言:  en  |  fr  |  ja  |  ko  |  tr 

top

意見

注意事項
此處並非問答區。在此提供評論應朝向改善文件或伺服器的建議,且若評論已實作或被認為無效/離題,將可能由我們的管理員移除。關於 Apache HTTP Server 如何管理的問題,應向註冊於 Libera.chat 的 IRC 頻道 #httpd 提出,或寄至我們的 郵件清單