Foros del Web » Programando para Internet » PHP »

Error al listar archivos de una carpeta, permisos? dueño?

Estas en el tema de Error al listar archivos de una carpeta, permisos? dueño? en el foro de PHP en Foros del Web. Buenas a todos, Tengo un pequeño problema al intentar leer archivos desde php (todo esto en local, fase de testeo) Os comento, tengo un script ...
  #1 (permalink)  
Antiguo 11/06/2008, 00:41
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 18 años, 10 meses
Puntos: 0
Error al listar archivos de una carpeta, permisos? dueño?

Buenas a todos,

Tengo un pequeño problema al intentar leer archivos desde php (todo esto en local, fase de testeo)

Os comento, tengo un script en php que al crear un usuario en la BD crea su correspondiente carpeta en el server donde se irán volcando archivos de consulta.

Código:
...
	$sqlClienteC="INSERT INTO cliente_consultoria(Login,Password,Nombre,Apellido1,Apellido2,Telefono,Email,Perfil,Ocupacion,Empresa,Curso) 
		VALUES ('$login','$login2','$nombre','$apellido1','$apellido2','$tlfno','$email',
		'$perfil','$ocupacion','$empresa','$curso');";  
	$result=mysql_db_query($basedatos, $sqlClienteC, $link) or die (mysql_error());  
	
	$sqlRuta="SELECT * FROM cliente_consultoria WHERE ((Login='$login')AND(Password='$login2'));";
	$resultRuta=mysql_db_query($basedatos, $sqlRuta, $link) or die (mysql_error());  
	$rowRuta=mysql_fetch_row($resultRuta);
	
	$ruta1 = "../../documentos/Consultoria/".$rowRuta[0];
	echo $ruta1;
	mkdir ($ruta1, 0755, true);
...
Despues uso una clase de actionscript, llamada FileReference, para subir archivos a la carpeta del cliente logeado. FileReference sube los archivos mediante uploadFile.php:

Código:
<?php  
	session_start();
	$idCliente = $_SESSION['idCliente'];
	$uploadDir = './'.$idCliente."/";
	$uploadFile = $uploadDir . $_FILES['Filedata']['name'];
	move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile); 
	chmod($uploadFile, 0755);
 ?>
Los archivos se suben perfectamente, sin ningún tipo de problemas.


Luego FileReference, mediante un método interno, realiza un listado de los archivos que contiene la carpeta, o sea, cuando subes un archivo, luego debe listartelo con los demás que ya hubiera dentro de la carpeta. Y aquí está el problema. Ese listado lo realiza otro script, list.php:

Código:
<?php  
	session_start();
	
	$fp2 = fopen("archivo.txt","w");
	//abrimos el archivo para escritura
	fwrite($fp2, "Estoy escribiendo en un archivo!!!");
	fclose($fp2); 
	
	$idCliente=$_SESSION['idCliente'];
	$No=array(".","..","list.php","uploadFile.php");  
	$fp=opendir($idCliente);
		
	echo "<?xml version='1.0' ?".">"; 
	echo "<files>";
	
	if ($fp=opendir($idCliente)) {
		echo "<file name='Carpeta abierta' tamanio='9999' />";	
	}else{
		echo "<file name='Imposible abrir carpeta' tamanio='9999' />";	
	}

	while (false!==($file=readdir($fp))){
		if (is_readable($file)) {
			echo "<file name='Archivo ".utf8_encode($file)." abierto' tamanio='".filesize($file)."' />";	
		}else{
			echo "<file name='Imposible leer archivo.".utf8_encode($file)."' tamanio='9999' />";	
		}
		if ((!in_array($file,$No))&&(is_readable($file))){  	
			echo "<file name='".utf8_encode($file)."' tamanio='".filesize($file)."' />";
			}  
		} 
	closedir($fp);  
	echo "</files>"; 
 ?>
Utilizo nodos "ficticios" para ver desde una consola de flash los nodos que se les pasan desde el xml. Y con cualquier archivo, haya sido subido con el script anterior o pegado directamente desde un explorador, me canta que no es leible (is_readable = false).

No entiendo muy bien por que lo hace así. Se supone que el usuario que crea la carpeta, que sube los archivos y que los intenta leer es el mismo, ya que todo se realiza desde php. ¿Alguna pista? Alguien ve algo extraño.
  #2 (permalink)  
Antiguo 11/06/2008, 01:21
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Error al listar archivos de una carpeta, permisos? dueño?

Pero readdir() solo devuelve el nombre del fichero, no la ruta completa. Y a is_readable() le debes pasar la ruta completa, porque si no buscara el nombre de fichero en el directorio activo.
  #3 (permalink)  
Antiguo 11/06/2008, 01:36
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Error al listar archivos de una carpeta, permisos? dueño?

Gracias DarkJ por tan rápida respuesta,

Creo q lo q me comentas lo probé ayer sin éxito, pero probé tantas cosas que ahora no estoy muy seguro, según te entiendo dices usar:

$file=readdir($idCliente."/".$fp);

Ahora mismo estoy en el trabajo y no puedo probarlo, lo miraré después.
  #4 (permalink)  
Antiguo 11/06/2008, 01:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Error al listar archivos de una carpeta, permisos? dueño?

No
Código PHP:
if (is_readable($idCliente."/".$file)) { 
  #5 (permalink)  
Antiguo 11/06/2008, 03:01
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Error al listar archivos de una carpeta, permisos? dueño?

Ok, gracias por la corrección.

Hay que estar mas despierto por las mañanas!!!

esta tarde confirmo lo q salga, chao
  #6 (permalink)  
Antiguo 11/06/2008, 14:20
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Error al listar archivos de una carpeta, permisos? dueño?

Pues al fin todo solucionado.

Tenía otro error en:

echo "<file name='".utf8_encode($file)."' tamanio='".filesize($ruta_de_Carpeta_contenedora."/".$file)."' />";

también hace falta que se le indique la ruta, al recoger el tamaño del archivo.

Gracias por la ayuda ;)

Última edición por Flober; 13/06/2008 a las 12:15
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 11:23.