Foros del Web » Programando para Internet » PHP »

Problemas al leer directorio

Estas en el tema de Problemas al leer directorio en el foro de PHP en Foros del Web. Tengo un problema cuando hago el recorrido de un directorio no me detecta los tipos de archivos y a todos los elementos u objetos me ...
  #1 (permalink)  
Antiguo 28/09/2003, 22:21
Avatar de grovervas
Usuario no validado
 
Fecha de Ingreso: junio-2002
Ubicación: Perú
Mensajes: 306
Antigüedad: 21 años, 10 meses
Puntos: 0
Problemas al leer directorio

Tengo un problema cuando hago el recorrido de un directorio no me detecta los tipos de archivos y a todos los elementos u objetos me los reconoce como ti todos fueran directorios, pero cuando efectruo que se lea el mismo direcotorio en donde esta la pagina index.php que lee el direcotorio todo funciona bien el problema es cuando leo otro directorio.. el codigo es el siguiente:

if($ruta == "")
{
$dir = "/Apache/htdocs/download/";
//$dir = ".";
}
else
{
$dir = $ruta;
}
$d = dir($dir); //Leemos el directorio
while ($file = $d->read())
{
//Capturamos todos los atributos del archivo.
$tipo = filetype($file);
$size = filezise($file);
$modificado = stat($file);
$ext = strrchr($file,'.');
$solo_nombre = str_replace (strrchr ($file, "."), "", $file);
# Verificamos si es un fichero (no un directorio) y si la extension del directorio se encuentra en $display_list
#--------------------------------------------------------------------------------
if ($tipo == file && preg_match ("/$ext/i", $display_list))
{
$solo_nombre = str_replace("_"," ",$solo_nombre);
$solo_nombre = strtolower($solo_nombre);
$solo_nombre = ucwords($solo_nombre);
$uploaddate = date("m-d-y",$modificado[9]);
//Formateamos la salida de acuerdo al criterio de orden.
if ((!$search) && ($orden == "Alfabetico"))
{
$filename[$totalfiles] = "$solo_nombre|$solo_nombre|$file|$ext|$size|$uploa ddate|$content";
}
if ((!$search) && ($orden == "Tamaño"))
{
$filename[$totalfiles] = "$size|$solo_nombre|$file|$ext|$size|$uploaddate|$ content";
}
if ((!$search) && ($orden == "Accesos"))
{
$filename[$totalfiles] = "$accesses|$solo_nombre|$file|$ext|$size|$uploadda te|$content";
}
if (($search) && ($C1))
{
$searchtext = "Your search for <b>$search</b> Yielded the following results:";
$filas_por_pagina = 0;
$currentpage = 1;
$pos = preg_match ("/$search/i", "$solo_nombre$content");
#print "pos is $pos";
if ($pos)
{
$filename[$totalfiles] = "$accesses|$solo_nombre|$file|$ext|$size|$uploadda te|$content";
//print $solo_nombre;
}
}
if ($search)
{
$searchtext = "Your search for <b>$search</b> Yielded the following results:";
$filas_por_pagina = 0;
$currentpage = 1;
$pos = preg_match ("/$search/i", "$solo_nombre");
#print "pos is $pos";
if ($pos)
{
$filename[$totalfiles] = "$accesses|$solo_nombre|$file|$ext|$size|$uploadda te|$content";
#print $solo_nombre;
}
}
$totalbytes = $totalbytes + $size;
$totalfiles++;
}
elseif(($tipo == dir) && ($file != ".") && ($file != ".."))
{
$solo_nombre = str_replace("_"," ",$solo_nombre);
//echo $solo_nombre;
$solo_nombre = strtolower($solo_nombre);
$solo_nombre = ucwords($solo_nombre);
$uploaddate = date("m-d-y",$modificado[9]);
//Formateamos la salida de acuerdo al criterio de orden.
if ((!$search) && ($orden == "Alfabetico")&& ($solonombre != "."))
{
$foldername[$totalfolder] = "$solo_nombre|$solo_nombre|$file|$ext|$size|$uploa ddate|$content";
}
if ((!$search) && ($orden == "Tamaño"))
{
$foldername[$totalfolder] = "$size|$solo_nombre|$file|$ext|$size|$uploaddate|$ content";
}
if ((!$search) && ($orden == "Accesos"))
{
$foldername[$totalfolder] = "$accesses|$solo_nombre|$file|$ext|$size|$uploadda te|$content";
}
$totalbyte = $totalbytea + $size;
$totalfolder++;
}
}

el problema surge cuando en l linea
$dir = "/apache/htdocs/download/" funciona todo bien pero si el direcotior cambai a "/apache/htdocs/download/prueba/" me sale un erro al leer el tamaño el el stat, y cuando utilizo otras rutas tambien me reconoce a los archivos como de tipo carpeta

Última edición por grovervas; 28/09/2003 a las 22:27
  #2 (permalink)  
Antiguo 28/09/2003, 23:10
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
haz pensado que sea que tu directorio tene un CHMOD diferente a download???, puede que sea eso, y no te deje leer la información...
  #3 (permalink)  
Antiguo 29/09/2003, 02:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El read del dir solo devuelve el nombre del fichero, sin informacion del path o ruta. Y como estas pasando ese valor a las funciones, el lo que hace es buscar ese nombre de fichero en el directorio donde se encuentra el script. Para solucionarlo simplemente llama a las funciones que necesitan la ruta asi:
Código PHP:
$size filesize($dir.$file); 
siempre y cuando $dir finalice en / . Asi las funciones sabran donde esta el fichero.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 29/09/2003, 08:19
Avatar de grovervas
Usuario no validado
 
Fecha de Ingreso: junio-2002
Ubicación: Perú
Mensajes: 306
Antigüedad: 21 años, 10 meses
Puntos: 0
pero si te refieres al chmod creo que no puede ser por hi porque lo estoy programando en windows y todavia no lo llevo a linux, al principio tambien pense en eso pero modifique los permisos y funciona bien incluso registre ese directorio dentro de la configuración del apache como un direcotorio virtual pero nada...haber voy a probar como dice josemi y de ahi les cuento...

Última edición por grovervas; 29/09/2003 a las 08:21
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:19.