Comunidad de diseño web y desarrollo en internet online

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

Citar            
MensajeEscrito el 11 Jun 2008 06:45 am
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.
[/code]

Por merce

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Jun 2008 09:40 am
Para asegurarte que sea tema de derechos, cambia el chmod del primer script a 0777 y prueba que funcione

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2008 09:57 am
Buenas solisarg,

Gracias por contestar, pero ya he probado con 0777.

Me han comentado que puede ser que no se envíe correctamente la ruta de los archivos de dentro de la carpeta. O sea, que debo cambiar:

is_readable($file)

por

is_readable($idCliente.'/'.$file)

Por merce

15 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.