Funciones Básicas de Archivos 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

Autor

Emmanuel García De Caro

Webmaster de Blasten.com

Compartir

Comentarios

Daniel

24/4/2007
Es muy bueno tener en cuenta que si el archivo se encuentra dentro de alguna carpeta o disco hay que especificarlo en la direccion

<? file_exists('C:archivo.xxx'); ?>

jhonny_velasquez

19/1/2010
consulta
yo estoy creando archvios y directorios con script, pero me crea con el propietario de apache www-data y no con mi usuario,. como puedo hacer para cambiar o crear con mi propio usuario?. no me deja usar chown.

gaby

27/3/2010
re: no puedo usar chown
puedes usar chmod, asi puedes cambiar los permisos sin necesidad de cambiar de dueño

vanessa

10/11/2010
¿No falta un paréntesis?
if(unlink('el_archivo.txt')

HAX

28/5/2011
solo queria saber si hay algo que se pueda hacer al respecto de:
Bueno esque pues gracias a las funciones que ponen, en mi pagina tengo un sisetma de comentarios que ideee !. no lo veran en ningun otro lado !.
es en flash !, con PHP y XML !.. y bueno es cada sistema de comentarios por POST !
y lo que tengo que hacer es tener que estar creando y configurando sus bases de datos y sus archivos PHP !! y bueno ya me libre de dos de esas 3 !!..

ahora solo creo un post !, y bueno tengo que poner el archivo PHP para procesar el XML !. pero cuando abren el post , automaticamente detecta que no hay base de datos !!..

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

GRACIAS POR LA FUNCION PORSIERTO !.

y bueno en otra pagina me dieron la idea de como poder crear con PHP el archivo XML !!.
asi que desde flash le doy el path y el nombre del archivo y el php me crea la base de datos ya con la configuracion que necesito !!..

pero bueno !! ahora . quiero ver como puedo crear los archivos PHP !! con un script PHP !!.

como podria ser esto ?, les agradeceria su ayuda !!.., esque quiero hacerlo mas automatizado !!.
para ya nadamas dedicarme a programar lo que falta de la web y postear mas cosas !!!

gracia !.

gloria

10/6/2011
importante
me gustaria k me mandaran ejmplos de cada una de las funciones sobre el manejo de archivos

Jager

29/6/2011
unlink, como pasarle una variable?
¿quien es fusil de quien jaja?
http://www.ventics.com/category/php-mysql/page/40/
no pero ya en serio, use esta instruccion
unlink(?ARCHIVO.XXX?);
y todo va de maravilla, borra correctamente el archivo, pero poniendo el nombre de forma manual.
¿Alguien sabe como le puedo pasar una variable desde, por ejemplo, una consulta mysql?

yo intente esto:

$libro= mysql_query("SELECT VINCULO FROM libros WHERE nombre_libro = '$nombre_libro' or autor='$autor' or editorial='$editorial'");
//esto manda la ruta del libro
unlink('$libro');//aqui intento pasarle el resultado, que es la ruta del archivo a borrar

pero, esta equivocada la sintaxis, alguen sabe como puedo pasarle una variable a esta instruccion.

fritz

20/9/2011
esta requete bueno el post
muchas gracias por compartir tu conocimiento, hay pocas personas,
estoy muy agardecido

Suaz

04/1/2012
duda
viendo el ejemplo del metodo de Renombrar un archivo o directorio
rename("/tmp/archivo_temp.txt", "/home/usuario/login/docs/mi_archivo.txt");
creo q tambien puede servir para mover un directorio o un archivo o me equivoco ??