<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_so - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_so</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_so.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_so.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_so.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_so.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_so.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Chargement de modules ou de code exécutable au cours du
démarrage ou du redémarrage du serveur</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>so_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_so.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Sous Windows, c'est un module de base (toujours
inclus)</td></tr></table>
<h3>Sommaire</h3>


    <p>Sur les systèmes d'exploitation sélectionnés, ce module peut être
    utilisé pour charger des modules dans le serveur HTTP Apache en cours d'exécution
    grâce au mécanisme des <a href="../dso.html">Dynamic Shared Object ou Objets Partagés
    Dynamiquement</a> (DSO), et évite ainsi de devoir effectuer une
    recompilation.</p>

    <p>Sous Unix, le code chargé provient en général de fichiers objet
    partagés possèdant en général l'extension <code>.so</code>, alors
    que sous Windows, l'extension peut être soit <code>.so</code>, soit
    <code>.dll</code>.</p>

    <div class="warning"><h3>Avertissement</h3>
    <p>En général, les modules compilés pour une version majeure du
    serveur HTTP Apache ne fonctionneront pas avec une autre (par
    exemple de 1.3 à 2.0 ou 2.0 à 2.2). D'une version majeure à l'autre,
    il y a souvent des modifications d'API qui nécessitent des
    modifications du module pour qu'il puisse fonctionner avec la
    nouvelle version.</p>
    </div>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#windows">Création de modules chargeables pour
Windows</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#loadfile">LoadFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#loadmodule">LoadModule</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_so">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_so">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="windows" id="windows">Création de modules chargeables pour
Windows</a> <a title="Lien permanent" href="#windows" class="permalink">&para;</a></h2>

    <div class="note"><h3>Note</h3>
    <p>Sous Windows, où les modules chargeables possèdent en général
    l'extension de nom de fichier <code>.dll</code>, les modules Apache
    httpd se nomment <code>mod_nom-module.so</code>, tout comme sur les
    autres plates-formes. Vous trouverez cependant encore des modules
    tiers, comme PHP par exemple, qui continuent d'utiliser la
    convention de nommage avec extension <code>.dll</code>.</p>

    <p>Bien que <code>mod_so</code> puisse encore charger des modules
    possèdant un nom du style <code>ApacheModuleFoo.dll</code>,
    il est préférable d'utiliser la
    nouvelle convention de nommage ; si vous modifiez votre module
    chargeable pour la version 2.0, veuillez aussi modifier son nom pour
    respecter cette nouvelle convention.</p></div>

    <p>Les API des modules Apache httpd sous Unix et Windows sont identiques.
    Alors que certains modules s'appuient sur certains
    aspects de l'architecture Unix non présents dans Windows, et ne
    fonctionneront donc pas sur cette dernière plate-forme, de nombreux
    modules fonctionnent sous Windows avec peu ou pas de modification
    par rapport à leur version Unix.</p>

    <p>Lorsqu'un module fonctionne, il peut être ajouté au serveur de
    deux manières. Sous Unix, il peut être compilé dans le serveur.
    Comme Apache httpd pour Windows ne dispose pas du programme
    <code>Configure</code> propre à Apache httpd pour Unix, le fichier source
    du module doit être ajouté au fichier projet Apache de base, et ses
    symboles ajoutés au fichier <code>os\win32\modules.c</code>.</p>

    <p>La seconde méthode consiste à compiler le module en tant que DLL,
    à savoir une bibliothèque partagée qui pourra être chargée dans le
    serveur en cours d'exécution via la directive
    <code class="directive">LoadModule</code>. Ces modules DLL
    peuvent être distribués et exécutés sur toute installation d'Apache
    httpd pour Windows, sans avoir à recompiler le serveur.</p>

    <p>Pour créer un module DLL, il est nécessaire d'apporter une légère
    modification à son fichier source : l'enregistrement du module doit
    être exporté depuis la DLL (qui sera elle-même créée plus tard ;
    voir plus loin). Pour ce faire, ajoutez la macro
    <code>AP_DECLARE_MODULE</code> (définie dans les fichiers
    d'en-têtes d'Apache httpd) à la définition de l'enregistrement de votre
    module. Par exemple, si votre module est déclaré comme suit :</p>

<div class="example"><p><code>
    module foo_module;
</code></p></div>

    <p>Remplacez cette ligne par :</p>
<div class="example"><p><code>
    AP_DECLARE_MODULE(foo);
</code></p></div>

    <p>Notez que cette macro ne sera prise en compte que sous Windows,
    si bien que le module poura être utilisé sans changement sous Unix,
    si besoin est. Alternativement, si vous êtes familier avec les
    fichiers <code>.DEF</code>, vous pouvez les utiliser pour exporter
    l'enregistrement du module.</p>

    <p>Maintenant, nous sommes prêts à créer une DLL contenant notre
    module. Il va falloir pour cela la lier avec la bibliothèque
    d'export libhttpd.lib qui a été créée au cours de la compilation de
    la bibliothèque partagée libhttpd.dll. Il sera peut-être aussi
    nécessaire de modifier la configuration du compilateur pour
    s'assurer que les fichiers d'en-têtes d'Apache httpd seront correctement
    localisés. Vous trouverez cette bibliothèque à la racine du
    répertoire des modules de votre serveur. Il est souhaitable
    d'utiliser un fichier de module .dsp existant dans l'arborescence
    afin de s'assurer que l'environnement de compilation est
    correctement configuré, mais vous pouvez aussi comparer les options
    de compilation et d'édition de liens à votre fichier .dsp.</p>

    <p>Ceci devrait créer une version DLL de votre module. Il vous
    suffit maintenant de l'enregistrer dans le répertoire
    <code>modules</code> à la racine de votre serveur, et d'utiliser la
    directive <code class="directive">LoadModule</code> pour la charger.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="loadfile" id="loadfile">Directive</a> <a name="LoadFile" id="LoadFile">LoadFile</a> <a title="Lien permanent" href="#loadfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Liaison du fichier objet ou de la bibliothèque
spécifié</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LoadFile <em>nom-fichier</em> [<em>nom-fichier</em>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_so</td></tr>
</table>

    <p>La directive <code class="directive">LoadFile</code> permet de lier le fichier
    objet ou la bibliothèque spécifié au serveur lors du
    démarrage ou du redémarrage
    de ce dernier ; ceci permet d'ajouter tout code additionnel
    nécessaire au fonctionnement d'un module.
    <em>nom-fichier</em> est soit un chemin absolu, soit un chemin
    relatif au répertoire défini par la directive <a href="core.html#serverroot">ServerRoot</a>.</p>

    <p>Par exemple:</p>

    <pre class="prettyprint lang-config">LoadFile "libexec/libxmlparse.so"</pre>



</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="loadmodule" id="loadmodule">Directive</a> <a name="LoadModule" id="LoadModule">LoadModule</a> <a title="Lien permanent" href="#loadmodule" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Liaison avec le serveur du fichier objet ou de la
bibliothèque spécifié, et ajout de ce dernier à la liste des modules
actifs</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LoadModule <em>module nom-fichier</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_so</td></tr>
</table>
    <p>La directive <code class="directive">LoadModule</code> permet de lier le fichier objet ou la
    bibliothèque <em>nom-fichier</em> avec le serveur, et d'ajouter la
    structure de module nommée <em>module</em> à la liste des modules
    actifs. <em>module</em> est le nom de la variable externe de type
    <code>module</code> dans le fichier, et est référencé comme <a href="module-dict.html#ModuleIdentifier">Identificateur de
    module</a> dans la documentation des modules.</p>

    <p>Par exemple :</p>

    <pre class="prettyprint lang-config">LoadModule "status_module modules/mod_status.so"</pre>


    <p>charge le module spécifié depuis le sous-répertoire des modules
    situé à la racine du serveur.</p>

</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_so.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_so.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_so.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_so.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_so.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_so.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2025 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>