<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.pecl.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'install.pecl.windows.php',
    1 => 'Installer une extension PHP sous Windows',
    2 => 'Installer une extension PHP sous Windows',
  ),
  'up' => 
  array (
    0 => 'install.pecl.php',
    1 => 'Installation d\'extensions PECL',
  ),
  'prev' => 
  array (
    0 => 'install.pecl.downloads.php',
    1 => 'T&eacute;l&eacute;charger des extensions PECL',
  ),
  'next' => 
  array (
    0 => 'install.pecl.pear.php',
    1 => 'Compilation d\'extensions PECL partag&eacute;es avec la commande pecl',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'install/pecl.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.pecl.windows" class="sect1">
  <h2 class="title">Installer une extension PHP sous Windows</h2>
  <p class="para">
   Il existe deux moyens de charger une extension PHP sous Windows : 
   soit la compiler dans PHP, soit charger une DLL. Charger une
   extension précompilée est la méthode la plus pratique et la plus recommandée.
  </p>
  <p class="para">
   Pour charger une extension, son fichier <var class="filename">.dll</var> doit être disponible sur le système.
   Toutes les extensions sont automatiquement et périodiquement compilées par le groupe PHP
   (voir la section de téléchargements).
  </p>
  <p class="para">
   Pour compiler une extension dans PHP, se référer à la 
   documentation sur <a href="install.windows.building.php" class="link">
   la compilation des sources</a>.
  </p>
  <p class="para">
   Pour compiler une extension autonome, (c&#039;est-à-dire un fichier DLL), se référer à la
   documentation sur <a href="install.windows.building.php" class="link">
   la compilation des sources</a>. Si le fichier DLL est absent de la distribution
   PHP et de PECL, il pourrait être nécessaire de le compiler avant de pouvoir l&#039;utiliser.
  </p>
  
  <div class="sect2" id="install.pecl.windows.find">
   <h3 class="title">Où trouver une extension ?</h3>
   <p class="para">
    Les extensions PHP sont généralement appelées <var class="filename">php_*.dll</var> (où les astérisques
    représentent le nom de l&#039;extension) et elles sont rangées dans le dossier 
    <var class="filename">PHP\ext</var>.
   </p>
   <p class="para">
    PHP est livré avec les extensions qui sont les plus utiles à la majorité des utilisateurs.
    Elles sont appelées des extensions <em>bundled</em> (intégrées).
   </p>
   <p class="para">
    Cependant, si les extensions intégrées ne fournissent pas la fonctionnalité nécessaire,
    une extension qui le fait peut être trouvée dans <a href="https://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a>.
    Le PHP Extension Community Library (PECL, aussi dit Bibliothèque d&#039;Extensions Communautaires de PHP)
    est un dépôt pour les extensions PHP, fournissant un répertoire de toutes les extensions connues et
    des facilités d&#039;hébergement pour le téléchargement et le développement d&#039;extensions PHP.
   </p>
   <p class="para">
    Si une extension a été développée pour un usage particulier, elle peut être hébergée sur PECL afin
    que d&#039;autres personnes ayant les mêmes besoins puissent en bénéficier.
    Un effet secondaire intéressant est que c&#039;est une bonne occasion de recevoir des commentaires,
    (avec un peu de chance) des remerciements, des rapports de bogues et même des correctifs. Avant de
    soumettre une extension pour hébergement sur PECL, merci de lire
    <a href="https://pecl.php.net/package-new.php" class="link external">&raquo;&nbsp;PECL submit</a>.
   </p>
  </div>
  
  <div class="sect2" id="install.pecl.windows.which">
   <h3 class="title">Quelles extensions télécharger ?</h3>
   <p class="para">
    <em>Il existe souvent plusieurs versions de chaque DLL : </em>
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       Différents numéros de versions (au moins, les deux premiers chiffres doivent être les mêmes)
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Différentes configurations de sécurité de threads
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Différentes architectures de processeurs (x86, x64...)
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Différentes configurations de débogage
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <code class="literal">etc.</code>
      </span>
     </li>
    </ul>
   </p>
   <p class="para">
    Il est recommandé de choisir les extensions pour qu&#039;elles soient adaptées
    à la machine serveur sur laquelle PHP est utilisé. Le script suivant 
    va afficher <em>toutes</em> les configurations PHP : 
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Exemple #1 Appel de la fonction <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span></strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />phpinfo</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Ou bien, en ligne de commande : 
    <div class="example-contents screen">
<div class="cdata"><pre>
drive:\path\to\php\executable\php.exe -i
</pre></div>
    </div>
   </p>
  </div>
  
  <div class="sect2" id="install.pecl.windows.loading">
   <h3 class="title">Charger une extension</h3>
   <p class="para">
    Le moyen le plus courant pour charger une extension PHP est de l&#039;inclure dans le
    fichier de configuration <var class="filename">php.ini</var>. Il est à noter que de nombreuses extensions
    sont déjà présentes dans le fichier <var class="filename">php.ini</var> et qu&#039;il suffit simplement de
    supprimer le point-virgule pour les activer. 
   </p>
   <p class="para">
    À partir de PHP 7.2.0, le nom de l&#039;extension peut être utilisé à la place
    du nom de fichier de l&#039;extension. Comme il est indépendant de l&#039;OS et plus facile, en
    particulier pour les nouveaux arrivants, il devient la manière recommandée 
    de spécifier des extensions à charger. Les noms de fichiers restent pris en 
    charge pour la compatibilité avec les versions antérieures.
   </p>
    <div class="example-contents screen">
<div class="cdata"><pre>
;extension=php_extname.dll
</pre></div>
    </div>
    <div class="example-contents screen">
<div class="cdata"><pre>
extension=php_extname.dll
</pre></div>
    </div>
    <div class="example-contents screen">
<div class="cdata"><pre>
; À partir de PHP 7.2, favoriser :
extension=extname
zend_extension=another_extension
</pre></div>
    </div>
   <p class="para">
    Cependant, certains serveurs Web sont déroutants, car ils n&#039;utilisent pas le fichier 
    <var class="filename">php.ini</var> rangé avec l&#039;exécutable PHP. Pour en savoir plus sur le véritable 
    <var class="filename">php.ini</var> utilisé, il est possible de rechercher son emplacement à l&#039;aide de <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>:
   </p>
    <div class="example-contents screen">
<div class="cdata"><pre>
Configuration File (php.ini) Path   C:\WINDOWS
</pre></div>
    </div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Loaded Configuration File   C:\Program Files\PHP\8.2\php.ini
</pre></div>
    </div>
   <p class="para">
    Après activation d&#039;une extension, sauvegardez le fichier <var class="filename">php.ini</var>, et
    relancez le serveur Web, puis vérifiez à nouveau le fichier <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
    La nouvelle extension devrait y avoir sa section.
   </p>
  </div>
  
  <div class="sect2" id="install.pecl.windows.problemsolving">
   <h3 class="title">Résolution de problèmes</h3>
   <p class="para">
    Si l&#039;extension n&#039;apparaît pas dans <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>,
    il convient de vérifier les logs pour savoir d&#039;où vient le problème.
   </p>
   <p class="para">
    Si PHP est utilisé en ligne de commande (CLI), l&#039;erreur de chargement de l&#039;extension
    devrait être lisible directement sur l&#039;écran.
   </p>
   <p class="para">
    Si PHP est utilisé sur un serveur Web, la position et le format des logs 
    varient grandement d&#039;un serveur à l&#039;autre. Lire la documentation du
    serveur Web pour savoir où ils sont : PHP n&#039;a aucun contrôle sur cet emplacement.
   </p>
   <p class="para">
    Les problèmes les plus courants sont la localisation du fichier DLL et
    les DLLs dont il dépend, la valeur de la directive
    &quot;<a href="ini.core.php#ini.extension-dir" class="link">extension_dir</a>&quot;
    dans le <var class="filename">php.ini</var> et les incohérences de compilations.
   </p>
   <p class="para">
    Si le problème est une incohérence de compilation, la DLL téléchargée n&#039;est
    probablement pas la bonne. Il est recommandé d&#039;en télécharger une nouvelle, avec les bonnes
    configurations du serveur. <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> sera fortement utile.
   </p>
  </div>
  
 </div><?php manual_footer($setup); ?>