Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/06/2008, 00:41
Flober
 
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.