<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x sur les syst&egrave;mes Unix',
    2 => 'Apache 2.x sur les syst&egrave;mes Unix',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Installation sur les syst&egrave;mes Unix',
  ),
  'prev' => 
  array (
    0 => 'install.unix.commandline.php',
    1 => 'CGI et configuration en ligne de commande',
  ),
  'next' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x sur les syst&egrave;mes Unix',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'install/unix/apache2.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.apache2" class="sect1">
 <h2 class="title">Apache 2.x sur les systèmes Unix</h2>
 <p class="para">
  Cette section contient les notes et conseils d&#039;installation de PHP avec le serveur
  Apache 2.x sur les systèmes Unix.
 </p>
 
 <div class="warning"><strong class="warning">Avertissement</strong><p class="para">Nous ne recommandons pas
    l&#039;utilisation de PHP dans un environnement threadé MPM, avec Apache 2.
    Utilisez le mode prefork MPM, qui est le MPM par défaut pour Apache 2.0 et 2.2.
    Pour savoir pourquoi, lisez
    l&#039;entrée de la FAQ correspondante à l&#039;<a href="faq.installation.php#faq.installation.apache2" class="link">utilisation
        d&#039;Apache 2 dans un environnement threadé MPM</a>.</p></div>
 
 <p class="para">
  La <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;Documentation Apache</a>
  est la meilleure source d&#039;informations sur le serveur Apache 2.x.
  La plupart des informations sur les options d&#039;installation d&#039;Apache
  peut y être trouvée.
 </p>
 
 <p class="para">
  La version la plus récente du serveur HTTP Apache peut être obtenue
  depuis la <a href="http://httpd.apache.org/" class="link external">&raquo;&nbsp;page de téléchargement d&#039;Apache</a>,
  et une version adaptée de PHP depuis les liens ci-dessus.
  Ce guide couvre uniquement les bases de fonctionnement d&#039;Apache 2.x avec PHP.     
  Pour plus d&#039;informations, lire la
  <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;documentation Apache</a>.
  Les numéros de version sont omis ici, pour s&#039;assurer que les instructions ne soient
  pas incorrectes. Dans les exemples ci-dessous, &#039;NN&#039; devra être remplacé
  par la version spécifique d&#039;Apache à utiliser.
 </p>
 
 <p class="para">
  Il y a actuellement 2 versions d&#039;Apache 2.x - 2.4 et 2.2.
  Il y a plusieurs raisons de choisir l&#039;une plutôt que l&#039;autre ; néanmoins, la version
  2.4 est actuellement la dernière version disponible et c&#039;est aussi celle
  qui est recommandée. Cependant, les instructions contenues
  dans ce guide devraient fonctionner pour la version 2.4 comme pour la version 2.2. Note : Apache httpd 2.2 est officiellement en fin de vie, il n&#039;y aura plus de développement ni de correctif pour cette version.
 </p>
 
 <ol type="1">
  <li class="listitem">
   <p class="para">
    Télécharger le serveur HTTP Apache depuis le site ci-dessus et le décompresser :
   </p>
   
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar -xzf httpd-2.x.NN.tar.gz
</pre></div>
    </div>
   </div>
  </li>
  
  <li class="listitem">
   <p class="para">
    De la même façon, télécharger et décompresser les sources de PHP :
   </p>
   
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar -xzf php-NN.tar.gz
</pre></div>
    </div>
   </div>
  </li>
  
  <li class="listitem">
   <p class="para">
    Compiler et installer Apache. Consulter la documentation sur l&#039;installation
    d&#039;Apache pour plus de détails quant à la compilation de ce logiciel.
   </p>
   
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd httpd-2_x_NN
./configure --enable-so
make
make install
</pre></div>
    </div>
   </div>
  </li>
  
  <li class="listitem">
   <p class="para">
    Maintenant qu&#039;Apache 2.x.NN est disponible sous /usr/local/apache2,
    le configurer avec le support pour le chargement de modules, ainsi que le
    MPM prefork standard. Pour tester l&#039;installation, utiliser la procédure
    normale pour démarrer le serveur Apache, c.-à-d. :

    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl start
</pre></div>
     </div>
    </div>
    et l&#039;arrêter pour continuer la configuration de PHP :
    
    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl stop
</pre></div>
     </div>
    </div>
   </p>
  </li>
  
  <li class="listitem">
   
   <p class="para">
    Maintenant, configurez et compilez PHP. Ce sera à ce moment-là
    où il est possible de personnaliser PHP avec les diverses options disponibles,
    comme la liste des extensions à activer. Exécuter
    <strong class="command">./configure --help</strong> pour la liste des options disponibles. Dans notre exemple, nous effectuerons
    une configuration simple, avec Apache 2 et le support MySQL.
   </p>
   
   <p class="para">
    Si Apache a été construit depuis les sources, tel que décrit ci-dessus,
    l&#039;exemple suivant devrait être correct concernant les chemins vers <strong class="command">apxs</strong>, mais si
    Apache a été installé d&#039;une autre façon, il faut prendre en compte les
    spécificités et ajuster les chemins <strong class="command">apxs</strong> en conséquence. Il est à noter que suivant
    les distributions, il peut être nécessaire de renommer <strong class="command">apxs</strong> en <strong class="command">apxs2</strong>.
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install
</pre></div>
    </div>
   </div>
   
   <p class="para">
    En cas de modification des options de configuration après l&#039;installation,
    il faut exécuter de nouveau les étapes <strong class="command">configure</strong>, <strong class="command">make</strong> et <strong class="command">make install</strong>.
    Il suffit alors de redémarrer Apache pour que le nouveau module prenne effet.
    Une re-compilation d&#039;Apache n&#039;est pas nécessaire.
   </p>
   
   <p class="para">
    Il est à noter que, sauf indications contraires, l&#039;étape &quot;make install&quot; installera
    également <a href="https://pear.php.net/" class="link external">&raquo;&nbsp;PEAR</a>, mais aussi divers outils PHP comme <a href="install.pecl.phpize.php" class="link">phpize</a>, PHP CLI et
    bien plus encore.
   </p>
   
  </li>
  
  <li class="listitem">
   <p class="para">
    Configurer le fichier <var class="filename">php.ini</var>.
   </p>
   
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cp php.ini-development /usr/local/lib/php.ini
</pre></div>
    </div>
   </div>
   
   <p class="para">
    Il faut éditer le fichier .ini pour définir les options PHP.
    Pour placer ce fichier dans un autre répertoire, utiliser
    l&#039;option <code class="literal">--with-config-file-path=/some/path</code> à l&#039;étape 5.
   </p>
   
   <p class="para">
    En cas d&#039;utilisation du fichier php.ini-production, il faut s&#039;assurer de lire la liste
    des modifications correspondante car il peut affecter considérablement la façon
    dont PHP fonctionnera.
   </p>
   
  </li>
  
  <li class="listitem">
   
   <p class="para">
    Éditer le fichier <var class="filename">httpd.conf</var> pour charger le module PHP. Le chemin spécifié
    à droite de la chaîne LoadModule, doit correspondre au chemin système du module
    PHP. L&#039;étape &quot;make install&quot; ci-dessus devrait avoir réalisé cette opération
    automatiquement, mais une simple vérification permettra de s&#039;en assurer.
   </p>

   <div class="informalexample">
    <p class="para">
     Pour PHP 8:
    </p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php_module modules/libphp.so</pre>
</div>
    </div>

   </div>
   
   <div class="informalexample">
    <p class="para">
     Pour PHP 7:
    </p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php7_module modules/libphp7.so</pre>
</div>
    </div>

   </div>
   
  </li>
  
  <li class="listitem">
   
   <p class="para">
    Configurer Apache pour analyser certaines extensions comme étant des scripts PHP.
    Par exemple, laisser Apache passer à PHP les fichiers dont l&#039;extension est
    <code class="literal">.php</code>.
    Au lieu d&#039;utiliser seulement la directive <code class="literal">AddType</code> d&#039;Apache,
    nous souhaitons éviter tout risque potentiellement dangereux, lors
    d&#039;un téléchargement et de la création de fichier comme <var class="filename">exploit.php.jpg</var>,
    d&#039;être exécutés par PHP. En utilisant cet exemple, il est possible d&#039;avoir n&#039;importe
    quelle extension analysée par PHP. Nous avons ajouté <code class="literal">.php</code> pour l&#039;exemple.
   </p>
   
   
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch \.php$&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>
   
   <p class="para">
    Ou, pour autoriser les fichiers <code class="literal">.php</code>, <code class="literal">.php2</code>,
    <code class="literal">.php3</code>, <code class="literal">.php4</code>, <code class="literal">.php5</code>,
    <code class="literal">.php6</code>, et <code class="literal">.phtml</code> à être
    analysés par PHP, mais rien d&#039;autre, nous utiliserons ceci :
   </p>
   
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch &quot;\.ph(p[2-6]?|tml)$&quot;&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>
   
   <p class="para">
    Et pour autoriser les fichiers <code class="literal">.phps</code> à être gérés par le filtre du code
    source de PHP, et ainsi, être affichés comme code source avec la coloration
    syntaxique, utiliser ceci :
   </p>
   
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch &quot;\.phps$&quot;&gt;
    SetHandler application/x-httpd-php-source
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>
   
   <p class="para">
    <code class="literal">mod_rewrite</code> peut être utilisé pour permettre à n&#039;importe quel fichier <code class="literal">.php</code>
    d&#039;être affiché comme code source avec coloration syntaxique, sans pour autant
    avoir besoin de le renommer ou de le copier avec une extension <code class="literal">.phps</code> :
   </p>
   
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]</pre>
</div>
    </div>

   </div>
   
   <p class="para">
    Le filtre de code source PHP ne devrait pas être actif sur des systèmes de
    production, car il peut exposer du code confidentiel ou des informations
    sensibles contenues dans le code source.
   </p>
   
  </li>
  
  <li class="listitem">
   <p class="para">
    Utiliser la procédure normale pour démarrer le serveur Apache, c.-à-d. :
   </p>
   
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl start
</pre></div>
    </div>
   </div>
   
   <p class="para">Ou</p>
   
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
service httpd restart
</pre></div>
    </div>
   </div>
   
  </li>
 </ol>
 
 <p class="para">
  En ayant suivi les étapes précédentes, le serveur web est maintenant un
  Apache2 fonctionnel avec le support PHP comme module <code class="literal">SAPI</code>.
  Bien sûr, il y a une multitude d&#039;autres options de configuration de disponibles
  avec Apache et PHP. Pour plus d&#039;informations, entrer la commande
  <strong class="command">./configure --help</strong> dans l&#039;arbre source correspondant.
 </p>
 <p class="para">
  Apache peut être compilé en mode multithreadé, en sélectionnant
  le MPM <var class="filename">worker</var>, plutôt que le standard
  MPM <var class="filename">prefork</var>. Ceci est fait en ajoutant l&#039;option
  suivante à l&#039;argument de la commande &quot;./configure&quot;, à l&#039;étape 3 ci-dessus :
 </p>
 <div class="informalexample">
  <div class="example-contents screen">
<div class="cdata"><pre>
--with-mpm=worker
</pre></div>
  </div>
 </div>
 <p class="para">
  Cela ne devrait pas être entrepris sans être conscients des conséquences,
  et ayant au moins une juste compréhension de ce que cela implique.
  La documentation Apache concernant
  <a href="http://httpd.apache.org/docs/current/mpm.html" class="link external">&raquo;&nbsp;MPM-Modules</a>
  apportera d&#039;importantes informations qui permettront de prendre
  une décision.
 </p>
 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <p class="para">
   La <a href="faq.installation.php#faq.installation.apache.multiviews" class="link">FAQ Apache
   MultiViews</a> traite de l&#039;utilisation MultiViews avec PHP.
  </p>
 </p></blockquote>
 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <p class="para">
   Pour compiler une version multithreadée d&#039;Apache, le système cible
   doit supporter les threads. Dans ce cas, PHP doit également être construit
   avec Zend Thread Safety (ZTS). Sous cette configuration, toutes les extensions
   ne seront pas disponibles. La configuration recommandée est de compiler Apache avec le
   module MPM <var class="filename">prefork</var> par défaut.
  </p>
 </p></blockquote>
</div><?php manual_footer($setup); ?>