> Manuales > Gestión de archivos en PHP

Recopilación de las funciones más utilizadas para el manejo de archivos y su respectiva sintaxis.

Cambiar los permisos de un archivo
chmod ('El_archivo.xxx',0777);

Cambiar el nombre del propietario de un archivo
chown ('El_archivo.xxx','Mi nombre');

Copiar un archivo
copy('El_archivo.xxx','/nuevo_directorio/');

Optener el directorio inicial de un archivo o subdirectorio
dirname('directorio_raiz/subdirectorio');

Obtener el espacio disponible en un directorio en Bytes.
disk_free_space('directorio');

Verificar si un archivo existe
file_exists ('archivo.xxx');

Obtener la hora del ultimo acceso a un archivo
fileatime('archivo.xxx');

Obtener la hora de la ultima modificación de un archivo
filemtime('archivo.xxx');

Obtener el dueño de una archivo
fileowner ('archivo.xxx');

Obtener los permisos de una archivo
fileperms ('archivo.xxx');

Obtener el tamaño en bytes de un archivo
filesize('archivo.xxx');

Obtener el tipo de archivo
filetype('archivo.xxx');

Abrir un archivo o dirección URL
fopen ('archivo.xxx','r');

Saber si un archivo es ejecutable
is_executable('archivo.xxx');

Indicar si el archivo se puede leer
is_readable('archivo.xxx');

Indica si un archivo fue subido mediante HTTP POST upload
is_uploaded_file ('archivo.xxx');

Saber si un archivo se puede escribir
is_writable ('archivo.xxx');

Crea un directorio con permisos.
mkdir('/nuevo_directorio',0777);

Mover un archivo cargado a través de HTTP POST de un directorio a otro predefinido
move_uploaded_file ('directorio/archivo.xxx','directorio2/archivo.xxx');

Leer el contenido resultante de archivo file_get_contents('el_archivo.xx');

Renombrar un archivo o directorio
rename("/tmp/archivo_temp.txt", "/home/usuario/login/docs/mi_archivo.txt");

ELIMINAR UN DIRECTORIO
rmdir('/directorio');

CREAR UN ARCHIVO TEMPORAL
tmpfile();

ELIMINAR UN ARCHIVO
unlink('ARCHIVO.XXX');

Importante: Alguna de estas funciones requieren tener permisos 0777 chmod para poder trabajar correctamente.

La mayoría de ellas devuelven un booleano, por lo cual se puede imprimir un resultado en pantalla de la siguiente manera:

if(unlink('el_archivo.txt') echo 'se ha eliminado el archivo';
else echo 'Imposible eliminar el archivo, compruebe que el fichero exista y que tenga permiso xxx.';

?>


Recuerda que para establecer permisos a directorios o archivos se deben emplear 4 cifras no 3 como usualmente se hace y produce error.
Ejemplos:
0777, 0755, 0666, etc…

Esto se debe a que el número para especificar el permiso debe incluirse en octal (Base 8). En PHP y otros lenguajes de programación.
Los números en Base 8 se escriben con un 0 delante para diferenciarlos de los números en Base 10 o sistema decimal.

Trabajando con archivos

Otras de las gran ventajas de PHP, es la manipulación de archivos internos y remotos. Para ello se utiliza una función esencial fopen(); que se encarga de abrir un archivo o URL, Basándose en una serie de parámetros que iremos describiendo.

La sintaxis de esta función con la que trabajaremos es la siguiente: fopen ('archivo.xxx','Modo');

Donde archivo es el nombre del mismo y (.xxx) su extensión, cabe destacar que si la llamada de este archivo se hace de la siguiente forma: esquema://, se asume que es una URL y Php buscara un gestor de protocol para tal esquema. Recordemos que los protocoles pueden ser (http, https, ftp, ftps, pop, pop3, y otros), si Php no encuentra una o más envolturas registradas para dicho protol, se emitirá un mensaje de error.

Modo, se refiere a la forma en que abrimos el archivos (bajo que recursos). Por ejemplo:

Si queremos hacer una apertura para solo lectura, o lectura y escritura u otro. Estos modos se designan con Letras predefinidas en Php, que son las siguientes:

'r' Apertura para sólo lectura; ubica el apuntador de archivo al comienzo del mismo.

'r+' Apertura para lectura y escritura; ubica el apuntador de archivo al comienzo del mismo.

'w' Apertura para sólo escritura; ubica el apuntador de archivo al comienzo de éste y lo trunca a una longitud de cero. Si el archivo no existe, intenta crearlo.

'w+' Apertura para lectura y escritura; ubica el apuntador de archivo al comienzo de éste y lo trunca a una longitud cero. Si el archivo no existe, intenta crearlo.

'a' Apertura para sólo escritura; ubica el apuntador de archivo al final del mismo. Si el archivo no existe, intenta crearlo.

'a+' Apertura para lectura y escritura; ubica el apuntador de archivo al final del mismo. Si el archivo no existe, intenta crearlo.

'x' Creación y apertura para sólo escritura; ubica el apuntador de archivo al comienzo de éste. Si el archivo ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no existe, intenta crearlo. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT en la llamada de sistema open(2) interna. Esta opción es soportada en PHP 4.3.2 y versiones posteriores, y sólo funciona con archivos locales. ´

'x+' Creación y apertura para lectura y escritura; ubica el apuntador de archivo al comienzo de éste. Si el archivo ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no existe, intenta crearlo. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT en la llamada de sistema open(2) interna. Esta opción es soportada en PHP 4.3.2 y versiones posteriores, y sólo funciona con archivos locales.

Un ejemplo:

<?
$archivo= fopen("documento.txt" , "r");
if ($archivo) {
while (!feof($archivo)) {
echo fgets($archivo, 255).'<br>';
}
}
fclose ($archivo);
?>


Explicando:
Primero abrimos el archivo en modo de lectura y lo agrupamos a la variable $archivo, si se puede realizar la apertura (ósea si fopen() devuelve TRUE), Ejecutamos un bucle WHILE y en el argumento introducimos la función feof(), Encargada de verificar si el apuntador a un fichero esta al final del mismo. Luego la función fgets(), se encarga de imprimir la línea del fichero apuntado. y finalmente cerramos el archivo con fclose();

Otro Ejemplo:

<?
$archivo=fopen("documento.txt" , "w");
if ($archivo) {
fputs ($archivo, "Resulto el script");
}
fclose ($archivo);
?>


Explicando:
Abrimos el archivo nuevamente pero esta vez en modo de solo Escritura. Si se puede ejecutar ese proceso if($archivo), agregamos una línea con fputs(), que tendrá como contenido Resulto el script.

El ultimo paso en esta oportunidad como ya conocemos es cerrar el archivo. Cabe destacar que para que este ultimo ejemplo funcione, obviamente el archivo documento.txt, requiere tener PERMISO DE ESCRITURA, preferiblemente 0777 CHMOD.

Más información:http://www.php.net/manual/es/ref.filesystem.html

Emmanuel García De Caro

Webmaster de Blasten.com

Manual