<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.fopen.php',
    1 => 'fopen',
    2 => 'Abre un fichero o un URL',
  ),
  'up' => 
  array (
    0 => 'ref.filesystem.php',
    1 => 'Funciones del Sistema de Archivos',
  ),
  'prev' => 
  array (
    0 => 'function.fnmatch.php',
    1 => 'fnmatch',
  ),
  'next' => 
  array (
    0 => 'function.fpassthru.php',
    1 => 'fpassthru',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Abre un fichero o un URL</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.fopen-description">
  <h3 class="title">Descripción</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> asocia un recurso con nombre, especificado por
   <code class="parameter">filename</code>, a un flujo.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.fopen-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">filename</code></dt>
     <dd>
      <p class="para">
       Si <code class="parameter">filename</code> está en la forma &quot;esquema://...&quot;, se
       asume que será un URL y PHP buscará un gestor de protocolos
       (también conocido como envoltura) para ese protocolo. Si no está registrada
       ninguna envoltura para ese protocolo, PHP emitirá un aviso para ayudar a rastrear
       problemas potenciales en el script y continuará como si
       <code class="parameter">filename</code> especificara un fichero normal.
      </p>
      <p class="para">
       Si PHP ha decidido que <code class="parameter">filename</code> especifica
       un fichero local, intentará abrir un flujo para ese fichero.
       El fichero debe ser accesible para PHP, por lo que es necesario asegurarse de que
       los permisos de acceso del fichero permiten este acceso.
       Si está habilitado
       <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a> se pueden aplicar
       más restricciones.
      </p>
      <p class="para">
       Si PHP ha decidido que <code class="parameter">filename</code> especifica
       un protocolo registrado, y ese protocolo está registrado como un
       URL de red, PHP se asegurará de que
       <a href="filesystem.configuration.php#ini.allow-url-fopen" class="link">allow_url_fopen</a> está
       habilitado. Si es desactivado, PHP emitirá un aviso y
       la llamada a fopen fallará.
      </p>
      <blockquote class="note"><p><strong class="note">Nota</strong>: 
       <p class="para">
        La lista de protocolos soportados se puede encontrar en <a href="wrappers.php" class="xref">Protocolos y Envolturas soportados</a>. Algunos protocolos (también descritos como
        <code class="literal">envolturas</code>) soportan <code class="literal">contexto</code>
        y/u opciones de <var class="filename">php.ini</var>. Consulte la página específica del protocolo
        en uso para una lista de opciones que se pueden establecer. (p.ej.
        el valor <code class="literal">user_agent</code> en <var class="filename">php.ini</var> usado por la
        envoltura <code class="literal">http</code>).
       </p>
      </p></blockquote>
      <p class="para">
       En la plataforma Windows, asegúrese de escapar cualquier barra invertida
       usada en la ruta de fichero, o use barras hacia delante.
       <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">
       El parámetro <code class="parameter">mode</code> especifica el tipo de acceso
       que se necesita para el flujo. Puede ser cualquiera de los siguientes:
       <table class="doctable table">
        <caption><strong>
         Una lista de los modos posibles de <span class="function"><strong>fopen()</strong></span>
         usando <code class="parameter">mode</code>
        </strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">mode</code></th>
           <th>Descripción</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><code class="literal">&#039;r&#039;</code></td>
           <td>
            Apertura para sólo lectura; coloca el puntero al fichero al
            principio del fichero.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;r+&#039;</code></td>
           <td>
            Apertura para lectura y escritura; coloca el puntero al fichero al
            principio del fichero.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;w&#039;</code></td>
           <td>
            Apertura para sólo escritura; coloca el puntero al fichero al
            principio del fichero y trunca el fichero a longitud cero.
            Si el fichero no existe se intenta crear.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;w+&#039;</code></td>
           <td>
            Abre para lectura y escritura; de otro modo, tiene
            el mismo comportamiento que <code class="literal">&#039;w&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;a&#039;</code></td>
           <td>
            Apertura para sólo escritura; coloca el puntero del fichero al
            final del mismo. Si el fichero no existe, se intenta crear.
            En este modo, <span class="function"><a href="function.fseek.php" class="function">fseek()</a></span> no tiene efecto, escribe siempre agregando.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;a+&#039;</code></td>
           <td>
            Apertura para lectura y escritura; coloca el puntero del fichero al
            final del mismo. Si el fichero no existe,
            se intenta crear. En este modo, <span class="function"><a href="function.fseek.php" class="function">fseek()</a></span> solo afecta
            a la posición de lectura, escribe siempre agregando.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;x&#039;</code></td>
           <td>
            Creación y apertura para sólo escritura; coloca el puntero del fichero al
            principio del mismo. Si el fichero ya existe, la
            llamada a <span class="function"><strong>fopen()</strong></span> fallará devolviendo <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> y
            generando un error de nivel <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>. Si
            el fichero no existe se intenta crear. Esto es equivalente
            a especificar las flags <code class="literal">O_EXCL|O_CREAT</code> para la
            llamada al sistema de <code class="literal">open(2)</code> subyacente.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;x+&#039;</code></td>
           <td>
            Creación y apertura para lectura y escritura; de otro modo tiene
            el mismo comportamiento que <code class="literal">&#039;x&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;c&#039;</code></td>
           <td>
            Abre el fichero para sólo escritura. Si el fichero no existe, se
            crea. Si existe no es truncado (a diferencia de
            <code class="literal">&#039;w&#039;</code>), ni la llamada a esta función falla (como en
            el caso con <code class="literal">&#039;x&#039;</code>). El puntero al fichero se
            posiciona en el principio del fichero. Esto puede ser útil si
            se desea obtener un bloqueo asistido (véase <span class="function"><a href="function.flock.php" class="function">flock()</a></span>)
            antes de intentar modificar el fichero, ya que al usar
            <code class="literal">&#039;w&#039;</code> se podría truncar el fichero antes de haber
            obtenido el bloqueo (si se desea truncar el fichero,
            se puede usar <span class="function"><a href="function.ftruncate.php" class="function">ftruncate()</a></span> después de solicitar el
            bloqueo).
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;c+&#039;</code></td>
           <td>
            Abre el fichero para lectura y escritura; de otro modo tiene el mismo
            comportamiento que <code class="literal">&#039;c&#039;</code>.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;e&#039;</code></td>
           <td>
            Establece el flag &#039;close-on-exec&#039; en el descriptor de fichero abierto. Disponible
            solamente en PHP compilado en sistemas compatibles con POSIX.1-2008.
           </td>
          </tr>

          <tr>
           <td><code class="literal">&#039;n&#039;</code></td>
           <td>
            Establecer el flag de no bloqueo en el descriptor de fichero abierto. Disponible
            solamente en PHP compilado en sistemas compatibles con POSIX.1-2008.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <blockquote class="note"><p><strong class="note">Nota</strong>: 
       <p class="para">
        Diferentes familias de sistemas operativos tienen diferentes convenciones
        para el final de línea. Cuando escribe un fichero de texto y quiere insertar un salto
        de línea, necesita usar el carácter o caracteres correctos de final de línea para su
        sistema operativo. Los sistemas basados en Unix usan <code class="literal">\n</code> como el
        carácter de final de línea, los sistemas basados en Windows usan <code class="literal">\r\n</code>
        como caracteres de final de línea y los sistemas basados en Macintosh usan
        <code class="literal">\r</code> como carácter de final de línea.
       </p>
       <p class="para">
        Si usa los caracteres de final de línea erróneos cuando escribe sus ficheros, se
        podrá encontrar con que otras aplicaciones que abran esos ficheros &quot;parecerán
        raras&quot;.
       </p>
       <p class="para">
        Windows ofrece un flag de trasnformación en modo texto (<code class="literal">&#039;t&#039;</code>)
        que transformará de manera transparente <code class="literal">\n</code> a
        <code class="literal">\r\n</code> cuando se trabaja con el fichero. En contraste, puede
        usar <code class="literal">&#039;b&#039;</code> para forzar el modo binario, lo cual no
        transformará su información. Para usar estas flags, especifique
        <code class="literal">&#039;b&#039;</code> o <code class="literal">&#039;t&#039;</code> como el último carácter
        del parámetro <code class="parameter">mode</code>.
       </p>
       <p class="para">
        El modo de transformación por omición es <code class="literal">&#039;b&#039;</code>.
        Puede usar el modo <code class="literal">&#039;t&#039;</code>
        si está trabajando con ficheros de texto plano y usa
        <code class="literal">\n</code> para delimitar los finales de línea es su script, pero
        espera que sus ficheros sean legibles con aplicaciones como versiones antiguas de notepad. Debería
        usar el <code class="literal">&#039;b&#039;</code> en todos los demás casos.
       </p>
       <p class="para">
        Si especifica el flag &#039;t&#039; cuando trabaja con archivos binarios,
        puede experimentar problemas extraños con sus datos, incluyendo archivos de imagen rotos
        y problemas extraños con los caracteres <code class="literal">\r\n</code>.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Nota</strong>: 
       <p class="para">
        Por portabilidad, También se recomienda encarecidamente que
        reescriba el código que usa o se basa en el modo <code class="literal">&#039;t&#039;</code>
        para que use las terminaciones de línea correctas y el modo
        <code class="literal">&#039;b&#039;</code> en su lugar.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Nota</strong>: 
       <span class="simpara">
        El <code class="parameter">mode</code> modo es ignorado para <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> Y
        envoluturas de flujo <var class="filename">php://fd</var>.
       </span>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">use_include_path</code></dt>
     <dd>
      <p class="para">
       El tercer parámetro opcional <code class="parameter">use_include_path</code>
       puede ser establecido a &#039;1&#039; o <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> si se desea buscar un fichero también en
       <a href="ini.core.php#ini.include-path" class="link">include_path</a>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">context</code></dt>
     <dd>
      <p class="para">Un <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> de
 <a href="stream.contexts.php" class="link">contexto de flujo</a>.</p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.fopen-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve un recurso de puntero a fichero si tiene éxito,
    o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.fopen-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <p class="para">
En caso de fallo, se emitirá una advertencia de tipo <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
</p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.fopen-changelog">
  <h3 class="title">Historial de cambios</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versión</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.0.16, 7.1.2</td>
       <td>
        Se añadió la opción <code class="literal">&#039;e&#039;</code>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.fopen-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplos de <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/fichero.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/fichero.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.ejemplo.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/fichero.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">Notas</h3>
  <div class="warning"><strong class="warning">Advertencia</strong><p class="para">
 Cuando SSL es utilizado, el servidor IIS de Microsoft violará el protocolo al cerrar la conexión sin
 enviar un indicador <code class="literal">close_notify</code>. PHP lo reportará como &quot;SSL: Fatal Protocol Error&quot;
 cuando se llegue al final de los datos. Para evitar esto, el nivel de la directiva
 <a href="errorfunc.configuration.php#ini.error-reporting" class="link">error_reporting</a> debe ser bajado para no incluir los avisos.
 PHP puede detectar automáticamente los servidores IIS defectuosos al abrir
 el flujo utilizando <code class="literal">https://</code> y suprimirá el aviso.
 Al utilizar <span class="function"><a href="function.fsockopen.php" class="function">fsockopen()</a></span> para crear un socket <code class="literal">ssl://</code>,
 es responsabilidad del desarrollador detectar y suprimir el aviso.
</p></div>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Si está experimentando problemas al leer y escribir ficheros y
    está usando la versión de módulo de servidor de PHP, asegúrese de que
    los ficheros y directorios que está usando sean accesibles por el proceso
    del servidor.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Esta función también podría tener éxito cuando <code class="parameter">filename</code> es un
    directorio. Si no se está seguro de que <code class="parameter">filename</code> sea un
    fichero o un directorio, podría ser necesario utilzar la función
    <span class="function"><a href="function.is-dir.php" class="function">is_dir()</a></span> antes de llamar a <span class="function"><strong>fopen()</strong></span>.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.fopen-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><a href="wrappers.php" class="xref">Protocolos y Envolturas soportados</a></li>
    <li><span class="function"><a href="function.fclose.php" class="function" rel="rdfs-seeAlso">fclose()</a> - Cierra un fichero</span></li>
    <li><span class="function"><a href="function.fgets.php" class="function" rel="rdfs-seeAlso">fgets()</a> - Recupera la l&iacute;nea actual a partir de la posici&oacute;n del puntero de archivo</span></li>
    <li><span class="function"><a href="function.fread.php" class="function" rel="rdfs-seeAlso">fread()</a> - Lectura del archivo en modo binario</span></li>
    <li><span class="function"><a href="function.fwrite.php" class="function" rel="rdfs-seeAlso">fwrite()</a> - Escribe en un fichero en modo binario</span></li>
    <li><span class="function"><a href="function.fsockopen.php" class="function" rel="rdfs-seeAlso">fsockopen()</a> - Abre un socket de conexi&oacute;n Internet o Unix</span></li>
    <li><span class="function"><a href="function.file.php" class="function" rel="rdfs-seeAlso">file()</a> - Lee el fichero y devuelve el resultado en un array</span></li>
    <li><span class="function"><a href="function.file-exists.php" class="function" rel="rdfs-seeAlso">file_exists()</a> - Verifica si un fichero o un directorio existe</span></li>
    <li><span class="function"><a href="function.is-readable.php" class="function" rel="rdfs-seeAlso">is_readable()</a> - Indica si un fichero existe y es accesible en lectura</span></li>
    <li><span class="function"><a href="function.stream-set-timeout.php" class="function" rel="rdfs-seeAlso">stream_set_timeout()</a> - Configura el tiempo de espera de un flujo</span></li>
    <li><span class="function"><a href="function.popen.php" class="function" rel="rdfs-seeAlso">popen()</a> - Crea un puntero de archivo de proceso</span></li>
    <li><span class="function"><a href="function.stream-context-create.php" class="function" rel="rdfs-seeAlso">stream_context_create()</a> - Crea un contexto de flujo</span></li>
    <li><span class="function"><a href="function.umask.php" class="function" rel="rdfs-seeAlso">umask()</a> - Cambia el &quot;umask&quot; actual</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); ?>