<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/configuration.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'configuration.file.php',
    1 => 'Le fichier de configuration',
    2 => 'Le fichier de configuration',
  ),
  'up' => 
  array (
    0 => 'configuration.php',
    1 => 'Configuration &agrave; l\'ex&eacute;cution',
  ),
  'prev' => 
  array (
    0 => 'configuration.php',
    1 => 'Configuration &agrave; l\'ex&eacute;cution',
  ),
  'next' => 
  array (
    0 => 'configuration.file.per-user.php',
    1 => 'Fichiers .user.ini',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'install/ini.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="configuration.file" class="sect1">
  <h2 class="title">Le fichier de configuration</h2>
  
  <p class="simpara">
   Le fichier de configuration (<var class="filename">php.ini</var>) est lu par PHP au démarrage. Si PHP
   a été compilé en module, le fichier n&#039;est lu qu&#039;une seule
   fois, au lancement du serveur web. Pour les versions
   <abbr title="Common Gateway Interface">CGI</abbr> et <abbr title="Command Line Interpreter/Interface">CLI</abbr> le fichier est lu à
   chaque invocation.
  </p>
  <p class="para">
   Le <var class="filename">php.ini</var> est cherché dans ces endroits (et dans cet ordre) :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      L&#039;endroit spécifique du module SAPI (la directive <code class="literal">PHPIniDir</code>
      d&#039;Apache 2, l&#039;option de la ligne de commande <code class="literal">-c</code> en CGI et en CLI)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      La variable d&#039;environnement <var class="varname">PHPRC</var>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      L&#039;endroit où se trouve le fichier <code class="literal">php.ini</code>
      peut être défini pour différentes versions de PHP.
      La racine des clés de registre dépend de l&#039;architecture 32 ou 64 bit de l&#039;OS et de PHP.
      Pour un OS et PHP 32 bit ou un OS et PHP 64 bit, utiliser 
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]</code> pour PHP 32 bit 
      sur un OS 64 bit, utiliser 
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]</code>
      à la place.
      Pour une installation avec la même architecture, les clés de registre suivantes sont cherchées dans cet ordre :
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]</code>,
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]</code> et
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]</code>, où
      x, y et z signifient les versions majeures, mineures et normales.
      Pour une architecture 32 bit de PHP sur un OS 64 bit, les clés de 
      registre suivantes sont cherchées dans cet ordre :
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]</code>,
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]</code> et
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]</code>, où
      x, y et z signifient les versions majeures, mineures et normales.
      S&#039;il y a une valeur pour <code class="literal">IniFilePath</code> dans ces clés,
      la première trouvée sera utilisée comme endroit où se trouve le fichier
      <code class="literal">php.ini</code> (uniquement sous Windows).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]</code> ou
      <code class="literal">[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]</code>, valeur de
      <code class="literal">IniFilePath</code> (uniquement sous Windows).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Le dossier courant de travail (sauf pour CLI)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Le dossier du serveur web (pour les modules SAPI), ou le dossier contenant PHP
      (autrement sous Windows)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Le dossier Windows (<var class="filename">C:\windows</var>
      ou <var class="filename">C:\winnt</var>) (pour Windows), ou
      l&#039;option de compilation <code class="literal">--with-config-file-path</code> lors de la compilation
     </span>
    </li>
   </ul>
  </p>
  <p class="para">
   Si le fichier <var class="filename">php-SAPI.ini</var> existe (où SAPI utilise SAPI, donc le
   nom du fichier est par exemple <var class="filename">php-cli.ini</var> ou
   <var class="filename">php-apache.ini</var>), il sera utilisé à la place du <var class="filename">php.ini</var>.
   Le nom SAPI peut être déterminé en utilisant la fonction <span class="function"><a href="function.php-sapi-name.php" class="function">php_sapi_name()</a></span>.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Le serveur web Apache change ce dossier en dossier root au démarrage, ce qui fait
    que PHP essaye de lire <var class="filename">php.ini</var> depuis le système de fichiers racine s&#039;il existe.
   </p>
  </p></blockquote>
  <p class="simpara">
   Les variables d&#039;environnement peuvent être référencées dans les valeurs
   de configuration de <var class="filename">php.ini</var> comme illustré ci-dessous. À partir de PHP 8.3.0,
   une valeur de repli peut être spécifiée, qui sera utilisée lorsque la variable
   référencée n&#039;est pas définie.
  </p>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Variables d&#039;environnement dans <var class="filename">php.ini</var></strong></p>
   <div class="example-contents">
<div class="inicode"><pre class="inicode">; PHP_MEMORY_LIMIT est repris depuis l&#039;environnement
memory_limit = ${PHP_MEMORY_LIMIT}
; Si PHP_MAX_EXECUTION_TIME n&#039;est pas défini, il prendra la valeur de repli 30.
max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}</pre>
</div>
   </div>

  </div>
  <p class="para">
   Les directives <var class="filename">php.ini</var> sont directement documentées, par extensions,
   sur les pages respectives du manuel de ces extensions. La
   <a href="ini.php" class="link">liste des directives internes</a> est disponible
   en annexe. Il est probable que toutes les directives PHP ne sont pas documentées
   dans le manuel. Pour une liste complète des directives disponibles dans la version de PHP utilisée,
   il convient de lire les commentaires du fichier <var class="filename">php.ini</var>.
   Il est également possible de trouver la
   <a href="https://github.com/php/php-src/blob/master/php.ini-production" class="link external">&raquo;&nbsp;dernière version du <var class="filename">php.ini</var></a>
   sur Git.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Extrait du <var class="filename">php.ini</var></strong></p>
    <div class="example-contents">
<div class="inicode"><pre class="inicode">; tout texte sur une ligne, situé après un point-virgule &quot;;&quot; est ignoré
[php] ; les marqueurs de section (texte entre crochets) sont aussi ignorés
; Les valeurs booléennes peuvent être spécifiées comme ceci :
;    true, on, yes
; ou false, off, no, none
register_globals = off
track_errors = yes

; vous pouvez placer les chaînes de caractères entre guillemets
include_path = &quot;.:/usr/local/lib/php&quot;

; Les antislash sont traités comme n&#039;importe quel caractère
include_path = &quot;.;c:\php\lib&quot;</pre>
</div>
    </div>

    
   </div>
  </p>
  <p class="para">
   Il est possible de se référer à des variables .ini
   depuis des fichiers .ini. Par exemple : <code class="literal">open_basedir = ${open_basedir}
   &quot;:/new/dir&quot;</code>.
  </p>
    <div class="sect2" id="configuration.file.scan">
   <h3 class="title">Parcourir des répertoires</h3>

   <p class="para">
    Il est possible de configurer PHP pour lire les fichiers .ini présents dans un dossier,
    après la lecture de <var class="filename">php.ini</var>. Cela est réglé lors de la compilation avec l&#039;argument
    <strong class="option configure">--with-config-file-scan-dir</strong>.
    Le dossier à lire peut être modifié lors de l&#039;exécution
    par la définition de la variable d&#039;environnement <var class="varname">PHP_INI_SCAN_DIR</var>.
   </p>

   <p class="para">
    Il est possible de lire plusieurs dossiers en les séparant avec un
    séparateur de chemin spécifique à la plateforme (<code class="literal">;</code> pour Windows, NetWare
    et RISC OS; <code class="literal">:</code> pour toutes les autres plateformes; la valeur utilisée par PHP est
    disponible dans la constante <strong><code><a href="dir.constants.php#constant.path-separator">PATH_SEPARATOR</a></code></strong>).
    Si un dossier vide est fourni dans 
    <var class="varname">PHP_INI_SCAN_DIR</var>, PHP
    lira également le dossier fourni à la compilation via
    <strong class="option configure">--with-config-file-scan-dir</strong>.
   </p>

   <p class="para">
    Dans chaque répertoire, PHP lira tous les fichiers terminant par
    <code class="literal">.ini</code> dans l&#039;ordre alphabétique. Une liste des fichiers qui
    ont été chargés et dans quel ordre est disponible en appelant la fonction
    <span class="function"><a href="function.php-ini-scanned-files.php" class="function">php_ini_scanned_files()</a></span>, ou en exécutant PHP avec l&#039;option
    <strong class="option unknown">--ini</strong>.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
En supposant que PHP est configuré avec --with-config-file-scan-dir=/etc/php.d,
et que le séparateur de chemin est :...

$ php
  PHP va charger tous les fichiers présents dans /etc/php.d/*.ini comme fichiers
  de configuration.

$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php
  PHP va charger tous les fichiers présents dans /usr/local/etc/php.d/*.ini 
  comme fichiers de configuration.

$ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php
  PHP va charger tous les fichiers présents dans /etc/php.d/*.ini, puis
  /usr/local/etc/php.d/*.ini comme fichiers de configuration.

$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php
  PHP va charger tous les fichiers présents dans /usr/local/etc/php.d/*.ini, puis dans
  /etc/php.d/*.ini comme fichiers de configuration.
</pre></div>
    </div>
   </div>
  </div>
 </div><?php manual_footer($setup); ?>