<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.filesystem.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.fopen.php',
    1 => 'fopen',
    2 => 'Ouvre un fichier ou une URL',
  ),
  'up' => 
  array (
    0 => 'ref.filesystem.php',
    1 => 'Fonctions sur les syst&egrave;mes de fichiers',
  ),
  'prev' => 
  array (
    0 => 'function.fnmatch.php',
    1 => 'fnmatch',
  ),
  'next' => 
  array (
    0 => 'function.fpassthru.php',
    1 => 'fpassthru',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/filesystem/functions/fopen.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.fopen" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">fopen</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">fopen</span> &mdash; <span class="dc-title">Ouvre un fichier ou une URL</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.fopen-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>fopen</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$mode</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$use_include_path</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span></span> <code class="parameter">$context</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>fopen()</strong></span> crée une ressource nommée, spécifiée par
   le paramètre <code class="parameter">filename</code>, sous la forme d&#039;un flux.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.fopen-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">filename</code></dt>
     <dd>
      <p class="para">
       Si <code class="parameter">filename</code> est de la forme &quot;protocole://&quot;,
       <code class="parameter">filename</code> est supposé être une URL, et PHP va
       rechercher un gestionnaire de protocole adapté pour lire ce fichier.
       Si aucun gestionnaire pour ce protocole n&#039;est disponible, PHP va émettre
       une alerte qui permettra de savoir qu&#039;il y a des problèmes dans
       le script, et il tentera d&#039;exploiter <code class="parameter">filename</code>
       comme un fichier classique.
      </p>
      <p class="para">
       Si PHP décide que le fichier <code class="parameter">filename</code> est un fichier
       local, il va essayer d&#039;ouvrir un flux avec ce fichier. Le fichier doit être
       accessible à PHP. Il faut donc s&#039;assurer d&#039;avoir les
       droits d&#039;accès à ce fichier. Si l&#039;on active
       la directive <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>, d&#039;autres
       conditions peuvent aussi s&#039;appliquer.
      </p>
      <p class="para">
       Si PHP a décidé que <code class="parameter">filename</code> spécifie
       un protocole enregistré, et que ce protocole est enregistré comme
       un protocole réseau, PHP s&#039;assurera que la directive
       <a href="filesystem.configuration.php#ini.allow-url-fopen" class="link">allow_url_fopen</a> est activée.
       Si elle est inactive, PHP va émettre une alerte et l&#039;appel <span class="function"><strong>fopen()</strong></span>
       va échouer.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        La liste des protocoles supportés est disponible sur <a href="wrappers.php" class="xref">Liste des protocoles et des gestionnaires support&eacute;s</a>.
        Certains protocoles (appelés aussi <code class="literal">wrappers</code> ou gestionnaires)
        supportent des <code class="literal">context</code> et/ou des options dans le fichier
        <var class="filename">php.ini</var>. Se référer aux pages du manuel traitant le protocole, pour connaître
        la liste des options qui sont disponibles (p. ex. l&#039;option de <var class="filename">php.ini</var>
        <code class="literal">user_agent</code> est utilisée par le gestionnaire <code class="literal">http</code>).
       </p>
      </p></blockquote>
      <p class="para">
       Sous Windows, il faut s&#039;assurer de bien protéger les antislashs
       utilisés dans le chemin du fichier, ou bien utiliser des slashs.
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"c:\\folder\\resource.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>
     </dd>
    
    
     <dt><code class="parameter">mode</code></dt>
     <dd>
      <p class="para">
       Le paramètre <code class="parameter">mode</code> spécifie le type d&#039;accès désiré
       au flux. Il peut prendre les valeurs suivantes :
       <table class="doctable table">
        <caption><strong>
         Liste des modes possibles pour la fonction <span class="function"><strong>fopen()</strong></span> en utilisant
         le paramètre <code class="parameter">mode</code>
        </strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">mode</code></th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><code class="literal">&#039;r&#039;</code></td>
           <td>
            Ouvre en lecture seule et place le pointeur de fichier au
            début du fichier.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;r+&#039;</code></td>
           <td>
            Ouvre en lecture et écriture et place le pointeur de
            fichier au début du fichier.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;w&#039;</code></td>
           <td>
            Ouvre en écriture seule ; place le pointeur de fichier au
            début du fichier et réduit la taille du fichier à 0.
            Si le fichier n&#039;existe pas, on tente de le créer.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;w+&#039;</code></td>
           <td>
            Ouvre en lecture et écriture ; le comportement est
            le même que pour <code class="literal">&#039;w&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;a&#039;</code></td>
           <td>
            Ouvre en écriture seule ; place le pointeur de fichier à
            la fin du fichier. Si le fichier n&#039;existe pas, on tente
            de le créer. Dans ce mode, la fonction <span class="function"><a href="function.fseek.php" class="function">fseek()</a></span>
            n&#039;a aucun effet, les écritures surviennent toujours.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;a+&#039;</code></td>
           <td>
            Ouvre en lecture et écriture ; place le pointeur de fichier
            à la fin du fichier. Si le fichier n&#039;existe pas, on tente
            de le créer. Dans ce mode, la fonction <span class="function"><a href="function.fseek.php" class="function">fseek()</a></span>
            n&#039;affecte que la position de lecture, les écritures sont toujours 
            ajoutées à la fin.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;x&#039;</code></td>
           <td>
            Crée et ouvre le fichier en écriture seulement ; place le pointeur de
            fichier au début du fichier. Si le fichier existe déjà,
            <span class="function"><strong>fopen()</strong></span> va échouer, en retournant <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> et
            en générant une erreur de niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
            Si le fichier n&#039;existe pas, <span class="function"><strong>fopen()</strong></span> tente de le
            créer. Ce mode est l&#039;équivalent des options <code class="literal">O_EXCL|O_CREAT</code>
            pour l&#039;appel système <code class="literal">open(2)</code> sous-jacent.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;x+&#039;</code></td>
           <td>
            Crée et ouvre le fichier pour lecture et écriture ; le comportement est
            le même que pour <code class="literal">&#039;x&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;c&#039;</code></td>
           <td>
            Ouvre le fichier pour écriture seulement. Si le fichier n&#039;existe pas, il
            sera créé, s&#039;il existe, il n&#039;est pas tronqué (contrairement à
            <code class="literal">&#039;w&#039;</code>) et l&#039;appel à la fonction n&#039;échoue pas (comme dans
            le cas de <code class="literal">&#039;x&#039;</code>). Le pointeur du fichier est positionné
            au début. Ce mode peut être utile pour obtenir un verrou (voir
            <span class="function"><a href="function.flock.php" class="function">flock()</a></span>) avant de tenter de modifier le fichier, utiliser
            <code class="literal">&#039;w&#039;</code> pourrait tronquer le fichier avant d&#039;obtenir le verrou
            (il est possible de toujours tronquer grâce à <span class="function"><a href="function.ftruncate.php" class="function">ftruncate()</a></span>).
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;c+&#039;</code></td>
           <td>
            Ouvre le fichier pour lecture et écriture, le comportement est le même
            que pour le mode <code class="literal">&#039;c&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;e&#039;</code></td>
           <td>
            Définit l&#039;indicateur close-on-exec sur le descripteur de fichier
            ouvert. Disponible uniquement en PHP compilé sur les systèmes
            conformes POSIX.1-2008.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;n&#039;</code></td>
           <td>
            Définit l&#039;indicateur non-bloquant sur le descripteur de fichier. Seulement
            disponible en PHP compilé sur les systèmes conformes POSIX.1-2008.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Les systèmes d&#039;exploitation utilisent différents caractères
        pour les nouvelles lignes. Lors de l&#039;écriture dans un fichier
        texte et que l&#039;on insère une nouvelle ligne, il faut utiliser le bon
        caractère pour le système d&#039;exploitation. Les systèmes Unix
        utilisent <code class="literal">\n</code> comme nouvelle ligne, les systèmes
        Windows utilisent <code class="literal">\r\n</code>, et les systèmes
        Macintosh (Mac OS Classic) utilisent <code class="literal">\r</code>.
       </p>
       <p class="para">
        Si l&#039;on n&#039;utilise pas le bon caractère de nouvelle ligne lors de
        l&#039;écriture des fichiers, il y a un risque d&#039;ouvrir les fichiers avec
        des applications qui donneront un aspect &#039;bizarre&#039; au texte.
       </p>
       <p class="para">
        Windows propose un mode de traduction (<code class="literal">&#039;t&#039;</code>),
        qui va traduire automatiquement les caractères <code class="literal">\n</code> en
        <code class="literal">\r\n</code> lors du travail sur le fichier.
        À l&#039;inverse, il est possible d&#039;utiliser l&#039;option <code class="literal">&#039;b&#039;</code> pour forcer
        le fichier à être écrit en mode binaire, sans traduction des données.
        Pour utiliser ces options, ajoutez <code class="literal">&#039;b&#039;</code> ou <code class="literal">&#039;t&#039;</code>
        comme dernier caractère du paramètre <code class="parameter">mode</code>.
       </p>
       <p class="para">
        Le mode de traduction par défaut est <code class="literal">&#039;b&#039;</code>.
        Il est possible d&#039;utiliser <code class="literal">&#039;t&#039;</code> lors de l&#039;écriture dans des
        fichiers de texte et le caractère <code class="literal">\n</code> pour définir
        les fins de ligne, dans les scripts, mais que l&#039;on s&#039;attend à ce
        que le fichier soit relu par une application comme les anciennes versions
        de Notepad. Il est recommandé de toujours utiliser l&#039;option <code class="literal">&#039;b&#039;</code>
        dans les autres cas.
       </p>
       <p class="para">
        Si l&#039;on spécifie <code class="literal">&#039;t&#039;</code> lors du travail
        avec des fichiers binaires, il serait possible de rencontrer des problèmes
        avec les données, comme des images corrompues ou des caractères
        <code class="literal">\r\n</code> inopinés.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Pour des raisons de portabilité, il est fortement
        recommandé de réécrire les scripts qui utilisent l&#039;option
        <code class="literal">&#039;t&#039;</code>, pour qu&#039;ils utilisent le bon caractère
        de nouvelle ligne et le mode <code class="literal">&#039;b&#039;</code>.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Le <code class="parameter">mode</code> est ignoré pour les enveloppes de flux
        <var class="filename">php://output</var>, <var class="filename">php://input</var>,
        <var class="filename">php://stdin</var>, <var class="filename">php://stdout</var>,
        <var class="filename">php://stderr</var> et <var class="filename">php://fd</var>.
       </span>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">use_include_path</code></dt>
     <dd>
      <p class="para">
       Le troisième paramètre optionnel <code class="parameter">use_include_path</code> 
       peut être défini à <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> pour chercher le fichier dans 
       l&#039;<a href="ini.core.php#ini.include-path" class="link">include_path</a>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">context</code></dt>
     <dd>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">
 Une <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> de <a href="stream.contexts.php" class="link">contexte de flux</a>.
</span></p></blockquote>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.fopen-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   Retourne une ressource représentant le pointeur de fichier,
    ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si une erreur survient
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.fopen-errors">
  <h3 class="title">Erreurs / Exceptions</h3>
  <p class="para">
En cas d&#039;échec, une alerte de type <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> sera émise.
</p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.fopen-changelog">
  <h3 class="title">Historique</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Version</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.0.16, 7.1.2</td>
       <td>
        L&#039;option <code class="literal">&#039;e&#039;</code> a été ajoutée.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.fopen-examples">
  <h3 class="title">Exemples</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Exemple avec <span class="function"><strong>fopen()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"/home/rasmus/file.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"/home/rasmus/file.gif"</span><span style="color: #007700">, </span><span style="color: #DD0000">"wb"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://www.example.com/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"ftp://user:password@example.com/somefile.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"w"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.fopen-notes">
  <h3 class="title">Notes</h3>
  <div class="warning"><strong class="warning">Avertissement</strong><p class="para">
 Lorsque SSL est utilisé, le serveur IIS de Microsoft violera le protocole en fermant la connexion sans
 envoyer un indicateur <code class="literal">close_notify</code>. PHP le reportera en tant que &quot;SSL: Fatal Protocol Error&quot;
 quand vous arrivez à la fin des données. Pour contourner ce le niveau de la directive
 <a href="errorfunc.configuration.php#ini.error-reporting" class="link">error_reporting</a> doit être baissée pour ne pas inclure les avertissements.
 PHP peut détecter automatiquement les serveur IIS bogué lors de l&#039;ouverture
 du flux en utilisant <code class="literal">https://</code> et supprimera l&#039;avertissement.
 Lors de l&#039;utilisation de <span class="function"><a href="function.fsockopen.php" class="function">fsockopen()</a></span> pour créer un socket <code class="literal">ssl://</code>,
 c&#039;est au développeur de détecter et supprimer l&#039;avertissement.
</p></div>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
   En cas de problèmes en lecture ou écriture
   de fichier et que l&#039;on utilise PHP en version module de serveur,
   il est à noter que les fichiers auxquels l&#039;on accède ne sont
   pas nécessairement accessibles au processus serveur.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Cette fonction peut également réussir lorsque <code class="parameter">filename</code>
    est un dossier. En cas de doute sur le fait que
    <code class="parameter">filename</code> soit un fichier ou un dossier, il est possible
    d&#039;utiliser la fonction <span class="function"><a href="function.is-dir.php" class="function">is_dir()</a></span> avant d&#039;utiliser la fonction
    <span class="function"><strong>fopen()</strong></span>.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.fopen-seealso">
  <h3 class="title">Voir aussi</h3>
  <p class="para">
   <ul class="simplelist">
    <li><a href="wrappers.php" class="xref">Liste des protocoles et des gestionnaires support&eacute;s</a></li>
    <li><span class="function"><a href="function.fclose.php" class="function" rel="rdfs-seeAlso">fclose()</a> - Ferme un fichier</span></li>
    <li><span class="function"><a href="function.fgets.php" class="function" rel="rdfs-seeAlso">fgets()</a> - R&eacute;cup&egrave;re la ligne courante &agrave; partir de l'emplacement du pointeur sur fichier</span></li>
    <li><span class="function"><a href="function.fread.php" class="function" rel="rdfs-seeAlso">fread()</a> - Lecture du fichier en mode binaire</span></li>
    <li><span class="function"><a href="function.fwrite.php" class="function" rel="rdfs-seeAlso">fwrite()</a> - &Eacute;crit un fichier en mode binaire</span></li>
    <li><span class="function"><a href="function.fsockopen.php" class="function" rel="rdfs-seeAlso">fsockopen()</a> - Ouvre un socket de connexion Internet ou Unix</span></li>
    <li><span class="function"><a href="function.file.php" class="function" rel="rdfs-seeAlso">file()</a> - Lit le fichier et renvoie le r&eacute;sultat dans un tableau</span></li>
    <li><span class="function"><a href="function.file-exists.php" class="function" rel="rdfs-seeAlso">file_exists()</a> - V&eacute;rifie si un fichier ou un dossier existe</span></li>
    <li><span class="function"><a href="function.is-readable.php" class="function" rel="rdfs-seeAlso">is_readable()</a> - Indique si un fichier existe et est accessible en lecture</span></li>
    <li><span class="function"><a href="function.stream-set-timeout.php" class="function" rel="rdfs-seeAlso">stream_set_timeout()</a> - Configure la dur&eacute;e d'expiration d'un flux</span></li>
    <li><span class="function"><a href="function.popen.php" class="function" rel="rdfs-seeAlso">popen()</a> - Cr&eacute;e un processus de pointeur de fichier</span></li>
    <li><span class="function"><a href="function.stream-context-create.php" class="function" rel="rdfs-seeAlso">stream_context_create()</a> - Cr&eacute;e un contexte de flux</span></li>
    <li><span class="function"><a href="function.umask.php" class="function" rel="rdfs-seeAlso">umask()</a> - Change le &quot;umask&quot; courant</span></li>
    <li><span class="classname"><a href="class.splfileobject.php" class="classname">SplFileObject</a></span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>