2.3. Implementación en PHP
![]() |
Imagen en pixabay de OpenClipart-Vectors bajo licencia Creative Common |
Como se expone en la sección de la web aprendeaprogramar.es, cuando necesitamos crear, guardar, leer o escribir archivos en la creación de sitios web, el manejo de éstos se convierte en una prioridad. Para ello, vamos a ver una serie de funciones y algunos ejemplos para familiarizarnos con el manejo de archivos a nivel básico en php.
FUNCIÓN fopen()
La función fopen() sirve para abrir ficheros (archivos). Su sintaxis general:
<?php //Sintaxis de fopen() $fp = fopen(fichero, modoDeApertura); ?> |
Donde:
- $fp es el descriptor o identificador del fichero abierto que necesitaremos más tarde.
- fichero puede ser un archivo de texto, un archivo con extensión .php, o incluso la URL de una página web (por ejemplo http://www.paginaweb.com/). “Abrir” una web con fopen() puede ser muy útil cuando queremos comprobar si la web existe, o si está activa.
- Si fichero empieza con "http://", se abre una conexión hacia la web especificada. Siempre debe ponérsele una barra ( / ) al final.
- Si fichero empieza con “ftp://", se abre una conexión al servidor especificado.
- Si fichero no empieza con ninguna de las cosas anteriormente dichas, se abre una conexión "directa" con el archivo especificado. Si no existe el archivo o dirección especificadas, se devuelve un error.
Hay distintos modos de apertura de archivos, a la hora de abrir un archivo, hay que saber de qué forma queremos abrirlo. Podemos abrirlo para escritura y lectura, pero de distintas formas (ver sección Para saber más):
Ejemplos:
<?php //Ejemplo aprenderaprogramar.com $fp = fopen("/apr2/fichero.txt", "r"); $fp = fopen("/apr2/fichero2.txt", "w"); $fp = fopen("http://www.aprenderaprogramar.com/texto.txt", "a+"); $fp = fopen("ftp://ftp.elmundo.es/fichero.txt", "w"); ?> |
Ahora bien, con esta simple instrucción sólo tendremos el archivo abierto para leer, escribir, o leer y escribir. Pero ahora tendremos que hacer uso de las otras instrucciones para escribir o recuperar los datos que estimemos oportunos.
FUNCIÓN fclose()
La función fclose(identificadorDelFichero) cierra un archivo abierto.
Esta función debe ser utilizada después de abrir y manipular el archivo como veremos en los siguientes ejemplos.
FUNCIONES fgets() Y feof()
La función fgets() recupera el contenido de una línea de un archivo. Su sintaxis general es:
<?php //Sintaxis de fgets() fgets(descriptorDelFichero); ?> |
Ejemplo:
<?php // Ejemplo aprenderaprogramar.com // Leemos la primera línea de fichero.txt // fichero.txt tienen que estar en la misma carpeta que el fichero php // fichero.txt es un archivo de texto normal $fp = fopen("fichero.txt", "r"); $linea = fgets($fp); fclose($fp); ?> |
Ahora bien, con esto sólo leeremos la primera línea del fichero de texto, si quisiéramos leer línea a línea hasta el final necesitaríamos el uso de un bucle while, por ejemplo.
<?php // Ejemplo aprenderaprogramar.com // Iremos leyendo línea a línea del fichero.txt hasta llegar al fin (feof($fp)) // fichero.txt tienen que estar en la misma carpeta que el fichero php // fichero.txt es un archivo de texto normal $fp = fopen("fichero.txt", "r"); while(!feof($fp)) { $linea = fgets($fp); echo $linea . "<br />"; } fclose($fp); ?> |
Esto nos mostrará el contenido del fichero de texto línea a línea. Comprobarás que hemos incluido una nueva función denominada feof (que viene significando algo así como file end of file o “marca de final de archivo”). La sintaxis general para esta función es: feof (identificadorDelArchivo)
La función feof nos devuelve true cuando hemos llegado al final de archivo y false si no lo hemos alcanzado todavía. La condición while (!feof($fp)) podríamos haberla escrito también de la siguiente manera: while (feof($fp)==false) . Esta sintaxis es equivalente, puedes utilizar la que prefieras, pero debes acostumbrarte a entender ambas formas de escritura.
Finalmente, fíjate como una vez hemos de terminado de operar con el fichero escribimos la instrucción fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer siempre.
FUNCIÓN fputs()
La función fputs() escribe una línea en un archivo. Su sintaxis general es:
<?php //Ejemplo aprenderaprogramar.com fputs(descriptorDelFichero, cadena); ?> |
Ejemplo:
<?php // Ejemplo aprenderaprogramar.com // Escribimos una primera línea en fichero.txt // fichero.txt tienen que estar en la misma carpeta que el fichero php $fp = fopen("fichero.txt", "w"); fputs($fp, "Prueba de escritura aprenderaprogramar.com"); fclose($fp); ?> |
Fíjate que al realizar la apertura del fichero en modo w, si el fichero no existe, será creado. Fíjate también como una vez hemos de terminado de operar con el fichero escribimos la instrucción fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer siempre.
Si ahora abrimos el fichero con algún editor de textos como Notepad++, Bloc de notas o cualquier otro, veremos lo siguiente:

Para saber más
El parámetro mode en PHP
En el portal http://www.php.net , se detalla la función fopen() se usa según la estructura:
fopen ( string $filename
, string $mode
)
El parámetro mode especifica el tipo de acceso que se necesita para el flujo. Puede ser cualquiera de los siguientes:
mode |
Descripción |
'r' | Apertura para sólo lectura; coloca el puntero al fichero al principio del fichero. |
'r+' | Apertura para lectura y escritura; coloca el puntero al fichero al principio del fichero. |
'w' | 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. |
'w+' | Apertura para lectura y 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. |
'a' | 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, fseek() solamente afecta a la posición de lectura; las lecturas siempre son pospuestas. |
'a+' | 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, fseek() no tiene efecto, las escrituras siempre son pospuestas. |
'x' | 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 fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING . Si el fichero no exite se intenta crear. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT para la llamada al sistema de open(2) subyacente. |
'x+' | Creación y apertura para lectura y escritura; de otro modo tiene el mismo comportamiento que 'x'. |
'c' | Abrir el fichero para sólo escritura. Si el fichero no existe, se crea. Si existe no es truncado (a diferencia de 'w'), ni la llamada a esta función falla (como en el caso con 'x'). El puntero al fichero se posiciona en el principio del fichero. Esto puede ser útil si se desea obtener un bloqueo asistido (véase flock()) antes de intentar modificar el fichero, ya que al usar 'w' se podría truncar el fichero antes de haber obtenido el bloqueo (si se desea truncar el fichero, se puede usar ftruncate() después de solicitar el bloqueo). |
'c+' | Abrir el fichero para lectura y escritura; de otro modo tiene el mismo comportamiento que 'c'. |

Para saber más
Funciones de ficheros en PHP
PHP dispone de las funciones vistas en esta sección y otras muchas para el tratamiento de ficheros. A continuación, se exponen algunas de las más usadas que puedes encontrar en la sección Funciones del Sistema de Archivos.
copy — Copia un fichero
Ejemplo :
<?php
$fichero = 'ejemplo.txt';
$nuevo_fichero = 'ejemplo.txt.bak';
if (!copy($fichero, $nuevo_fichero)) {
echo "Error al copiar $fichero...\n";
}
?>
unlink — Borra un fichero
Ejemplo :
<?php
$fh = fopen('prueba.html', 'a');
fwrite($fh, '<h1>¡Hola mundo!</h1>');
fclose($fh);
unlink('prueba.html');
?>
fgetc — Obtiene un carácter de un puntero a un archivo
Ejemplo :
<?php
$fp = fopen('archivo.txt', 'r');
if (!$fp) {
echo 'No se pudo abrir archivo.txt';
}
while (false !== ($carácter = fgetc($fp))) {
echo "$carácter\n";
}
?>
ftruncate — Trunca un archivo a una longitud dada
Ejemplo :
<?php
$nombre_archivo = 'lorem_ipsum.txt';
$gestor = fopen($nombre_archivo, 'r+');
ftruncate($gestor, rand(1, filesize($nombre_archivo)));
rewind($gestor);
echo fread($gestor, filesize($nombre_archivo));
fclose($gestor);
?>