PHP fopen() function

Definition and Usage

The fopen() function opens a file or URL.

If the operation fails, this function returns FALSE.

Syntax

fopen(filename,mode,include_path,context)
Parameter Description
filename Required. Specifies the file or URL to be opened.
mode Required. Specifies the type of access required to the file/stream. Possible values are listed in the table below.
include_path Optional. If you also need to search for files in the include_path, you can set this parameter to 1 or TRUE.
context Optional. Specifies the environment of the file handle. Context is a set of options that can modify the behavior of the stream.

Possible values of the mode parameter

mode explica
"r" Open in read-only mode, and move the file pointer to the beginning of the file.
"r+" Open in read-write mode, and move the file pointer to the beginning of the file.
"w" Open in write mode, move the file pointer to the beginning of the file, and truncate the file size to zero. If the file does not exist, it will try to create it.
"w+" Open in read-write mode, move the file pointer to the beginning of the file, and truncate the file size to zero. If the file does not exist, it will try to create it.
"a" Open in write mode, and move the file pointer to the end of the file. If the file does not exist, it will try to create it.
"a+" Open in read-write mode, and move the file pointer to the end of the file. If the file does not exist, it will try to create it.
"x"

Create and open the file in write mode, and move the file pointer to the beginning of the file. If the file already exists, the fopen() call fails and returns FALSE, and generates an E_WARNING level error message. If the file does not exist, it will try to create it.

es equivalente a especificar los marcadores O_EXCL|O_CREAT para la llamada del sistema de bajo nivel open(2).

esta opción es compatible con PHP 4.3.2 y versiones posteriores y solo se puede usar para archivos locales.

"x+"

se crea y abre en modo de lectura y escritura, y se coloca el puntero de archivo en la cabeza del archivo. Si el archivo ya existe, la llamada a fopen() falla y devuelve FALSE, generando un mensaje de error de nivel E_WARNING. Si el archivo no existe, se intenta crearlo.

es equivalente a especificar los marcadores O_EXCL|O_CREAT para la llamada del sistema de bajo nivel open(2).

esta opción es compatible con PHP 4.3.2 y versiones posteriores y solo se puede usar para archivos locales.

explica

fopen() se filename se asocia el nombre de recurso especificado a un flujo. Si filename es "scheme://...si el formato es "", se considera una URL, PHP buscará un procesador de protocolo (también conocido como protocolo encapsulado) para manejar este esquema. Si el protocolo no se ha registrado como protocolo encapsulado, PHP emitirá un mensaje para ayudar a verificar problemas potenciales en el script y filename se sigue ejecutando como un nombre de archivo común.

si PHP considera filename se especifica un archivo local, se intentará abrir un flujo en ese archivo. El archivo debe ser accesible para PHP, por lo que se debe confirmar que los permisos de acceso al archivo permiten este acceso. Si se ha activado el modo de seguridad o open_basedir se aplicarán limitaciones adicionales.

si PHP considera filename se especifica un protocolo registrado, y ese protocolo se registra como una URL de red URL, PHP verificará y confirmará si allow_url_fopen ha sido activado. Si está desactivado, PHP emitirá una advertencia y la llamada a fopen() fallará.

para context se agregó el soporte en PHP 5.0.0.

Avisos y comentarios

Comentarios:Las familias de sistemas operativos tienen diferentes hábitos de final de línea. Al escribir un archivo de texto y desear insertar una nueva línea, se debe usar el símbolo de final de línea compatible con el sistema operativo. Los sistemas basados en Unix utilizan \n como carácter de final de línea, los sistemas basados en Windows utilizan \r\n como carácter de final de línea, y los sistemas basados en Macintosh utilizan \r como carácter de final de línea. Si se utiliza un símbolo de final de línea incorrecto al escribir en un archivo, otros programas que abran estos archivos pueden comportarse de manera extraña.

Windows proporciona un marcador de conversión de texto ("t") que convierte transparentemente \n a \r\n. En correspondencia, también se puede usar "b" para forzar el uso del modo binario, de modo que no se convierta los datos. Para usar estos marcadores, ya sea con "b" o con "t" como el último carácter del parámetro mode.

El modo de conversión predeterminado depende del SAPI y la versión de PHP utilizada, por lo que se recomienda especificar siempre la marca adecuada para facilitar la portabilidad. Si estás operando con archivos de texto puros y estás utilizando \n como símbolo de final de línea en el script, pero aún esperas que estos archivos puedan ser leídos por otras aplicaciones como Notepad, utiliza "t" en el modo. En todos los demás casos, utiliza "b".

Pueden ocurrir problemas extraños al operar con archivos binarios sin especificar la marca "b", incluyendo archivos de imágenes dañados y problemas extraños con los caracteres \r\n.

Comentarios:Por razones de portabilidad, se recomienda encarecidamente que siempre utilices la marca "b" al abrir archivos con fopen().

Comentarios:Una vez más, por razones de portabilidad, se recomienda encarecidamente que reescribas el código que depende del "t" del modo para que utilice el símbolo de final de línea correcto y cambie al modo "b".

Ejemplo

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>