| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta name="generator" content="HTML Tidy, see www.w3.org" /> |
| |
| <title>Apache module mod_so</title> |
| </head> |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) --> |
| |
| <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" |
| vlink="#000080" alink="#FF0000"> |
| <!--#include virtual="header.html" --> |
| |
| <h1 align="CENTER">Module mod_so</h1> |
| |
| <p>This module provides for loading of executable code and |
| modules into the server at start-up or restart time.</p> |
| |
| <p><a href="module-dict.html#Status" |
| rel="Help"><strong>Status:</strong></a> Base (Windows); |
| Experimental (Unix)<br /> |
| <a href="module-dict.html#SourceFile" |
| rel="Help"><strong>Source File:</strong></a> mod_so.c<br /> |
| <a href="module-dict.html#ModuleIdentifier" |
| rel="Help"><strong>Module Identifier:</strong></a> |
| so_module<br /> |
| <a href="module-dict.html#Compatibility" |
| rel="Help"><strong>Compatibility:</strong></a> Available in |
| Apache 1.3 and later.</p> |
| |
| <h2>Summary</h2> |
| |
| <p>This is an experimental module. On selected operating |
| systems it can be used to load modules into Apache at runtime |
| via the <a href="../dso.html">Dynamic Shared Object</a> (DSO) |
| mechanism, rather than requiring a recompilation.</p> |
| |
| <p>On Unix, the loaded code typically comes from shared object |
| files (usually with <samp>.so</samp> extension), whilst on |
| Windows this module loads <samp>DLL</samp> files. This module |
| is only available in Apache 1.3 and up.</p> |
| |
| <p>In previous releases, the functionality of this module was |
| provided for Unix by mod_dld, and for Windows by mod_dll. On |
| Windows, mod_dll was used in beta release 1.3b1 through 1.3b5. |
| mod_so combines these two modules into a single module for all |
| operating systems.</p> |
| |
| <h2>Directives</h2> |
| |
| <ul> |
| <li><a href="#loadfile">LoadFile</a></li> |
| |
| <li><a href="#loadmodule">LoadModule</a></li> |
| </ul> |
| |
| <h2><a id="creating" name="creating">Creating DLL Modules for |
| Windows</a></h2> |
| |
| <p>The Apache module API is unchanged between the Unix and |
| Windows versions. Many modules will run on Windows with no or |
| little change from Unix, although others rely on aspects of the |
| Unix architecture which are not present in Windows, and will |
| not work.</p> |
| |
| <p>When a module does work, it can be added to the server in |
| one of two ways. As with Unix, it can be compiled into the |
| server. Because Apache for Windows does not have the |
| <code>Configure</code> program of Apache for Unix, the module's |
| source file must be added to the ApacheCore project file, and |
| its symbols must be added to the |
| <code>os\win32\modules.c</code> file.</p> |
| |
| <p>The second way is to compile the module as a DLL, a shared |
| library that can be loaded into the server at runtime, using |
| the <code><a href="#loadmodule">LoadModule</a></code> |
| directive. These module DLLs can be distributed and run on any |
| Apache for Windows installation, without recompilation of the |
| server.</p> |
| |
| <p>To create a module DLL, a small change is necessary to the |
| module's source file: The module record must be exported from |
| the DLL (which will be created later; see below). To do this, |
| add the <code>MODULE_VAR_EXPORT</code> (defined in the Apache |
| header files) to your module's module record definition. For |
| example, if your module has:</p> |
| <pre> |
| module foo_module; |
| </pre> |
| |
| <p>Replace the above with:</p> |
| <pre> |
| module MODULE_VAR_EXPORT foo_module; |
| </pre> |
| |
| <p>Note that this will only be activated on Windows, so the |
| module can continue to be used, unchanged, with Unix if needed. |
| Also, if you are familiar with <code>.DEF</code> files, you can |
| export the module record with that method instead.</p> |
| |
| <p>Now, create a DLL containing your module. You will need to |
| link this against the ApacheCore.lib export library that is |
| created when the ApacheCore.dll shared library is compiled. You |
| may also have to change the compiler settings to ensure that |
| the Apache header files are correctly located.</p> |
| |
| <p>This should create a DLL version of your module. Now simply |
| place it in the <samp>modules</samp> directory of your server |
| root, and use the <code><a |
| href="#loadmodule">LoadModule</a></code> directive to load |
| it.</p> |
| <hr /> |
| |
| <h2><a id="loadfile" name="loadfile">LoadFile</a> |
| directive</h2> |
| |
| <a href="directive-dict.html#Syntax" |
| rel="Help"><strong>Syntax:</strong></a> LoadFile |
| <em>filename</em> [<em>filename</em>] ...<br /> |
| <a href="directive-dict.html#Context" |
| rel="Help"><strong>Context:</strong></a> server config<br /> |
| <a href="directive-dict.html#Status" |
| rel="Help"><strong>Status:</strong></a> Base<br /> |
| <a href="directive-dict.html#Module" |
| rel="Help"><strong>Module:</strong></a> mod_so |
| |
| <p>The LoadFile directive links in the named object files or |
| libraries when the server is started or restarted; this is used |
| to load additional code which may be required for some module |
| to work. <em>Filename</em> is either an absolute path or |
| relative to <a href="core.html#serverroot">ServerRoot</a>.</p> |
| |
| <p>For example:</p> |
| <code>LoadFile libexec/libxmlparse.so</code> |
| |
| <hr /> |
| |
| <h2><a id="loadmodule" name="loadmodule">LoadModule</a> |
| directive</h2> |
| |
| <a href="directive-dict.html#Syntax" |
| rel="Help"><strong>Syntax:</strong></a> LoadModule <em>module |
| filename</em><br /> |
| <a href="directive-dict.html#Context" |
| rel="Help"><strong>Context:</strong></a> server config<br /> |
| <a href="directive-dict.html#Status" |
| rel="Help"><strong>Status:</strong></a> Base<br /> |
| <a href="directive-dict.html#Module" |
| rel="Help"><strong>Module:</strong></a> mod_so |
| |
| <p>The LoadModule directive links in the object file or library |
| <em>filename</em> and adds the module structure named |
| <em>module</em> to the list of active modules. <em>Module</em> |
| is the name of the external variable of type |
| <code>module</code> in the file, and is listed as the <a |
| href="module-dict.html#ModuleIdentifier">Module Identifier</a> |
| in the module documentation. Example (Unix, and for Windows as |
| of Apache 1.3.15):</p> |
| |
| <blockquote> |
| <code>LoadModule status_module modules/mod_status.so</code> |
| </blockquote> |
| |
| <p>Example (Windows prior to Apache 1.3.15, and some 3rd party |
| modules):</p> |
| |
| <blockquote> |
| <code>LoadModule foo_module modules/ApacheModuleFoo.dll<br /> |
| </code> |
| </blockquote> |
| |
| <p><strong>Note that all modules bundled with the Apache Win32 |
| binary distribution were renamed as of Apache version |
| 1.3.15</strong>.</p> |
| |
| <p>Win32 Apache modules are often distributed with the old |
| style names, or even a name such as libfoo.dll. Whatever the |
| name of the module, the LoadModule directive requires the exact |
| filename, no assumption is made about the filename |
| extension.</p> |
| |
| <p><strong>See also</strong>: <a |
| href="core.html#addmodule">AddModule</a> and <a |
| href="core.html#clearmodulelist">ClearModuleList</a></p> |
| |
| <!--#include virtual="footer.html" --> |
| </body> |
| </html> |
| |