Páginas: [1]
  Imprimir  
Autor Tema: Manejo de archivos en PHP  (Leído 1043 veces)
0 Usuarios y 1 Visitante están viendo este tema.
WHK
吴阿卡
Administrador
Usuario constante
*****

Karma: +8/-3
Mensajes: 272


Coder

yan_unico_102
Ver Perfil WWW Email
« : Agosto 22, 2009, 01:49:58 »


Hola, escribiré un poco sobre el manejo de archivos desde php  :D. Si quieres mas detalles sobre alguna función solamente haz clock sobre ella.
  • Modifica los permisos de acceso
Código:
<?php chmod('archivo.extension', 0777); ?>
Fijense que dice 0777 y no 777 ya que no es lo mismo y les daría error.
  • Establece el nombre del propietario del archivo
Código:
<?php chown('archivo.extension', 'usuario'); ?>
  • Copiar un archivo
Código:
<?php copy('archivo.extension', '/nuevo_directorio/archivo_nuevo.extebnsion'); ?>
es recomendable utilizar file_exists() antes de hacer una copia para comprobar si el archivo realmente existe o no, por ejemplo:
Código:
<?php
$origen = 'test.txt';
$destino= 'tete.txt';
if(file_exists($origen)){
 copy($origen, $destino);
}
?>
Utilizé llaves para que los que no saben mucho puedan entender mejor. También se puede usar rename().
  • Obtiene el directorio de un archivo
Código:
<?php dirname('directorio_raiz/subdirectorio/index.php'); ?>
Devolverá "directorio_raiz/subdirectorio" y esto funciona en rutas locales y remotas, por ejemplo:
Código:
<?php echo dirname('http://www.google.cl/docs/?q=998897'); ?>
devolverá "http://www.google.cl/docs".
  • Obtener el espacio disponible en un directorio en Bytes
Código:
<?php disk_free_space('directorio/'); ?>
  • Verificar si un archivo existe
Código:
<?php file_exists ('archivo.extension'); ?>
Devuelve true si existe y false si no está.
  • Hora del ultimo acceso a un archivo
Código:
<?php
echo fileatime('archivo.extension'); // Devuelve la hora en formato unix.
date('d/m/Y', fileatime($nombre)); // Date transforma la hora en formato unix a formato legible.
?>
  • Establecer la hora de la ultima modificación de un archivo
Código:
<?php touch('archivo.extension', '200512031530'); // Le asignaría: 2005-12-03 15:30  ?>
  • Obtener el nombre de usuario de un archivo (usuario de autentificación del sistema operativo)
Código:
<?php fileowner ('archivo.extension'); ?>
  • Obtener los permisos de una archivo en forma numérica tal como se mostró en el primer ejemplo
Código:
<?php fileperms ('archivo.extension'); ?>
  • Obtener el tamaño en bytes del archivo
Código:
<?php filesize('archivo.extension'); ?>
  • Obtener el tipo de archivo
Código:
<?php filetype('archivo.extension'); ?>
  • Abrir un archivo o dirección URL sin ssl (para hacerlo con ssl necesitas tener instalado en apache el mod ssl activado)
Código:
<?php fopen('archivo.extension','r'); ?>
Esto te devolverá un handle, o sea un manipulador que te servirá para poder utilizar otras funciones como fread y fputs. Para que es la 'r' ??, leer mas abajo.
  • Saber si un archivo es ejecutable (No siempre es fiable)
Código:
<?php is_executable('archivo.extension'); ?>
  • Indicar si el archivo se puede leer
Código:
<<?php is_readable('archivo.extension'); ?>
  • Indica si un archivo fue subido mediante HTTP POST upload
Código:
<<?php is_uploaded_file('archivoextension'); ?>
  • Saber si un archivo se puede escribir
Código:
<?php is_writable('archivo.xxx'); ?>
  • Crea un directorio con permisos
Código:
<?php mkdir('/nuevo_directorio', 0777); ?>
  • Mover un archivo cargado a través de HTTP POST de un directorio a otro predefinido
Código:
<?php move_uploaded_file ('directorio/archivo.extension','directorio2/archivo.extension'); ?>
  • Leer un archivo local o remoto
Código:
<?php 
file_get_contents('archivo.extension');
file_get_contents('http://www.google.cl/');
?>
  • Renombrar un archivo o directorio
Código:
<?php rename("/tmp/archivo_temp.txt", "/home/usuario/login/docs/mi_archivo.txt"); ?>
  • Eliminar un directorio
Código:
<?php rmdir('/directorio'); ?>
  • Crear un archivo temporal
Código:
<?php
$temp = tmpfile();
fwrite($temp, 'contenido del archivo');
fseek($temp, 0);
echo fread($temp, 1024);
fclose($temp); // elimina el handle y se destruye automáticamente el archvo temporal
?>
  • Eliminar un archivo
Código:
<?php unlink('archivo.extension'); ?>
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:
Código:
<?php
if(unlink('archivo.extension')
 echo 'seeliminó el archivo';
else 
 echo 'Imposible eliminar el archivo';
?>
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. Otras de las gran ventajas de PHP, es la manipulación de archivos internos y remotos. Para ello se utiliza una función 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.extension', 'Modo'); 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, etc, y de ahi vienen muchas vulnerabilidades producidas por bypasses que evaden los sistemas de seguridad básica de un sistema WEB. Si PHP no encuentra una o más envolturas registradas para dicho protol, se emitirá un mensaje de error. Si utilizas https que se basa en una conección SSL necesitarás tener instalado el plugin para conecciones ssl. El 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 al igual que CGI, C++, etc, 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.
Hize dos funciones que pueden demostrar un poco el uso de estas funciones:
Código:
<?php
$archivo = 'archivo.extension';
if(!file_exists($archivo))
 die('El archivo no existe.');
if(!is_readable($archivo))
 die('Necesita derechos de lectura.');
 
if($manipulador = fopen($archivo , 'r')){
 while(!feof($manipulador)){
  echo nl2br(fgets($manipulador, filesize($archivo)));
 }
}
fclose($manipulador);
?>
Código:
<?php
 function guardar_archivo($ruta, $contenido){
  if(file_exists($ruta))
   $modo = 'a';
  else
   $modo = 'x';
  if(!$handle = fopen($ruta, $modo))
   return false;
  fwrite($handle, $contenido);
  fclose($handle);
 }
?>

Si tienen mas dudas sobre alguna función extra no dude en preguntar o si prefiere puede visitar la web de php.net directamente: http://cl.php.net/manual/en/ref.filesystem.php Saludos y espero que les sirva de mucho!
« Última modificación: Agosto 22, 2009, 03:58:56 por WHK » En línea

Páginas: [1]
  Imprimir  
 
Ir a: