Inicio > PHP > MANEJO DE ARCHIVOS CON PHP

MANEJO DE ARCHIVOS CON PHP

El manejo de los archivos se convierte en una prioridad cuando se realiza creación de sitios web y se requiere que se cree, guarde, lea, escriba o borre archivos o la información contenida en estos esta es una breve muestra….

9- Control de Archivos

Se verán las funciones para abrir, cerrar y modificar archivos.

9.1- Fopen

La función fopen() sirve para abrir ficheros (archivos). Su código es:

Código:
php
fopen (fichero, modo de apertura);
?>

fichero puede ser un archivo de texto, un .php, o incluso una web (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://” (no es case-sensitive, osea, no es sensible a mayúsculas), se abre una conexión HTTP 1.0 hacia la web especificada. Siempre debe ponérsele un slash ( / ) al final.

Si fichero empieza con “ftp://” (no es case-sensitive, osea, no es sensible a mayúsculas), se abre una conexión FTP 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, devuelve error.

Hay distintos modos de apertura de archivos, los cuales se ven a continuación.

9.1.1- Formas de abrir archivos

A la hora de abrir un archivo, hay que saber de que forma queremos abrirlo. Podemos abrirlo para escritura y lectura, pero de distintas formas:

r
Abre el archivo sólo para lectura. Mueve al puntero al inicio del archivo.

r+
Abre el archivo para lectura y escritura. Mueve al puntero al inicio del archivo.

w
Abre el archivo sólo para escritura. Mueve el puntero al inicio del archivo, y trunca a 0 bytes (vacía el archivo). Si el archivo no existe, intenta crearlo.

w+
Abre el archivo para escritura y lectura. Mueve el puntero al inicio del archivo, y trunca a 0 bytes (vacía el archivo). Si el archivo no existe, intenta crearlo.

a
Abre el archivo para añadir. Si el archivo no existe, intenta crearlo.

a+
Abre el archivo para añadir y para lectura. Si el archivo no existe, intenta crearlo.

Cuando el servidor en el que se ejecuta el script es Windows, debe ponersele una b al final, ya que Windows diferencia entre archivos binarios y archivos de texto. Ejemplo:

Código:
php
$fp = fopen  ("archivo.txt","r+b");
[...]
?>

9.1.2- Permisos de archivos

Los archivos tienen ciertos “permisos”, osea, “X” usuario puede tener acceso a la lectura, a la escritura o a la ejecución de un archivo. Entonces:

Citar
1 -> Permisos de ejeución
2 -> Permisos de lectura
4 -> Permisos de escritura

Y están puestos en orden: Primero va el dueño del archivo, luego va cualquier grupo de usuarios, y luego el resto de los usuarios.

Entonces, según lo visto, algunos ejemplos serían:

Citar

770 -> Le da permisos de lectura, escritura y ejecución (2+4+1) al dueño, lo mismo al grupo y ningún permiso al resto de los usuarios.

666 -> Le da permisos de lectura y escritura (2+4) a todos los usuarios.

044 -> No le da ningún permiso al dueño del archivo y permisos de escritura (4) tanto al grupo como al resto de los usuarios.

9.2- Fwrite

Esta función sirve para escribir en el archivo. Si modo de apertura en fopen() es “r”, no hará nada con el archivo, porque abre el archivo solo para lectura. Su código es:

Código:
php
fwrite (fichero, texto [, bytes]);
?>

Si se especifíca bytes (no es obligatorio), se escribirá en el archivo hasta bytes bytes. Osea, si el texto es de 3 bytes, y se especifico 2 bytes en la función, el texto no se pondrá completo.

9.3- Fread

Con esta función se obtienen datos desde un archivo. Al igual que con fwrite(), pero al revés: Si el archivo se abre sólo para escritura, no se podrá usar esta función. Su código es:

Código:
php
fread (fichero, bytes);
?>

Lee hasta bytes bytes, o hasta EOF (End Of File, Fin Del Archivo), lo que pase primero.

9.4- Fclose

Esta función es muy simple: Sólo cierra la lectura y/o escritura del archivo. Su código es:

Código:
php
fclose (fichero);
?>

No es necesario hacer esto cada vez que abramos un archivo, pero es útil cuando abrimos mas de uno, entonces abrimos el primero, luego lo cerramos, luego el segundo y así.

9.5- Funciones útiles para el control de archivos

Hay muchas funciones que nos pueden servir para el manejo de archivos, y aquí les pongo algunas…:

file_exists(archivo)
Es una función del tipo Booleana.Como su nombre dice, ve si archivo existe. Si existe, devuelve TRUE ( 1 ), si no, devuelve FALSE ( 0 ). Ejemplo:

Código:
php
if (file_exists ("archivo.txt")) {
echo "El archivo existe!";
}
?>

chmod(archivo, perm)
Es para darle los permisos perm a archivo. Puede ser cualquier permiso a cualquier tipo de usuario, y sea el permiso que sea, debe llevar un cero ( 0 ) antes. Ejemplo:

Código:
php
chmod ("archivo.txt", 0777);
?>

Ese script le da todos los permisos a todos los usuarios para el archivo archivo.txt .

is_readable(archivo)
Muy útil. Es una función del tipo booleano (ver 3.6.4), devuelve TRUE ( 1 ) si archivo (también puede ser un directorio) tiene permisos de lectura para tu tipo de usuario. Ejemplo:

Código:
php
if (is_readable ("archivo.txt")) {
echo "Tienes permiso de lectura!";
}
?>

is_writable(archivo)
Igual que is_readable() pero, envez de ver permisos de lectura, ve permisos de escritura. También puede ser is_writeable(). Ejemplo:

Código:
php
if (!is_writable ("/dir")) {
echo "Puedes escribir en el directorio /dir";
}
?>

filesize(archivo)

Obtiene el tamaño de archivo en bytes. Ejemplo:

Código:
php
echo filesize ("archivo.txt");
?>

Ahora, ya vistas las mas usadas funciones para el manejo de archivos, haremos un script que comprueba si existe X archivo, si existe, ve si se puede escribir y leer en el, si se puede, se lee lo que tiene y luego se añade un texto en él. Si no se puede ni leer ni escribir, se le intentan de dar permisos 777:

Código:
php
$archivo = "algo.txt";
if (file_exists ($archivo)) { //¿Existe?
if (is_writable ($archivo) && is_readable ($archivo)) { //¿Se puede leer y escribir?
$fp = fopen ($archivo,"a+"); //Se abre el archivo para añadir y leer
$texto = fread ($fp, filesize ($archivo)); //Se lee el contenido hasta los bytes que pese el archivo
echo $texto;
$txt = "Ahora esta es una línea mas\n";
fwrite ($fp, $txt); //Se escribe la variable $txt en el archivo
fclose  ($fp); //Se cierra la lectura y escritura del archivo
}
else { //Si no se puede escribir ni leer
if (@chmod ($archivo, 0777)) { //Si se le pueden dar permisos 777 al archivo
echo "Permiso 777 dado al archivo ".$archivo.", corra denuevo el script para seguir su función";
}
else { //Si no se pudieron dar los permisos
echo "Los permisos no pudieron ser dados, trate hacerlo a mano";
}
}
else { //Si el archivo no existe
echo "¡El archivo ".$archivo." no existe!";
}
?>
About these ads
Categorías:PHP Etiquetas:
  1. Aún no hay comentarios.
  1. No trackbacks yet.
Disculpa, debes iniciar sesión para escribir un comentario.
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 26 seguidores

%d personas les gusta esto: