Foros del Web » Programando para Internet » PHP »

Leer estructura de directorio de otro servidor

Estas en el tema de Leer estructura de directorio de otro servidor en el foro de PHP en Foros del Web. Buenas gente ! Estoy teniendo problemas para hacer lo siguiente : Tengo 2 servidores A y B , y desde A necesito leer la estructura ...
  #1 (permalink)  
Antiguo 01/02/2008, 09:00
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Leer estructura de directorio de otro servidor

Buenas gente !
Estoy teniendo problemas para hacer lo siguiente :
Tengo 2 servidores A y B, y desde A necesito leer la estructura de un directorio ubicado en el servidor B.

Mi idea es, desde A :

Código PHP:
$archivo "http://www.otro-server.com/scanFotos.php";
$f fopen($archivo,"r");
$news fread($f,filesize($archivo));
fclose($f); 

Y en B, tengo el archivo scanFotos.php

Código PHP:
function buscaFoto ($d,$sep ">")
{
    
// aqui dentro hago la funcion y armo una cadena por ej : 
       // $cadenaconfotos = "casa01.jpg;casa02.jpg;auto01.jpg;auto02.jpg;auto03.jpg"

}
    
buscaFoto ("fotos/");
    
//
    
$fp=fopen("fotos/txt/fotosVarias.txt","w");    
    
fwrite($fp,$cadenaconfotos);    
    
fclose($fp);
    
// 
En resumen, mi intencion era esta, ejecuto archivo.php en el serverA, que es el que llama a scanFotos.php en el server B. En scanFotos se ejecuta una funcion donde obtengo una variable que es la cadena con todas las fotos ("foto1.jpg;foto2.jpg;foto3.jpg").
Esa cadena la pongo en un archivo de texto fotosVarias.txt.

La funcion buscaFoto que no esta detallada arriba y no la coloque xq es larga, me funciona bien.

Por ultimo leo esa cadena (fotosVarias.txt) desde A, ese no seria el problema. El problema es que no me graba en el archivo de texto la cadena con todas las fotos del directorio.

Si a alguien se le puede ocurrir donde estoy metiendo la pata, u otra forma de encarar el problema le agradeceré mucho.

PD : Espero que se entienda lo que quiero hacer.

Saludos.
  #2 (permalink)  
Antiguo 01/02/2008, 09:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Leer estructura de directorio de otro servidor

Si no te graba el archivo txt, es porque puedes tener problemas de permisos, así que verifica que tengas permisos de escritura en l a carpeta donde quieres almacenar los resultados de tu búsqueda.

Saludos.
  #3 (permalink)  
Antiguo 01/02/2008, 09:58
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Gracias GatorV por responder tan rapido. Estuve chequeando por las dudas, pero no es problema de permisos xq los tiene a todos (777).
Seguiremos intentando....
(Y)
  #4 (permalink)  
Antiguo 01/02/2008, 10:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Leer estructura de directorio de otro servidor

Cambia esta linea:
Código PHP:
$fp=fopen("fotos/txt/fotosVarias.txt","w"); 
Por esta:
Código PHP:
$fp=fopen("fotos/txt/fotosVarias.txt","w") or die( "No se pudo abrir el archivo" ); 
Para que verifiques si te creo o no el archivo.

Saludos.
  #5 (permalink)  
Antiguo 01/02/2008, 10:47
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Leer estructura de directorio de otro servidor

Buenas.
El problema es simple, no es que no te permita guardar, sino que que no hay nada que guardar. Me explico:

Ejecutas el codigo del server A. Este llama al server B.

El server B realiza una operacion en la que guarda un fichero de texto en un directorio,
pero no escribe(responde) nada en pantalla. Asi que como no escribe nada la información que recibe el server A es nada.

Server A guarda en su espacio la informacion que se ha escrito del server B, que es NADA.

Prueba esto en el server B

Código PHP:
function buscaFoto ($d,$sep ">")
{
    
// aqui dentro hago la funcion y armo una cadena por ej : 
       // $cadenaconfotos = "casa01.jpg;casa02.jpg;auto01.jpg;auto02.jpg;auto03.jpg"

}
//Escribe la cadena por pantalla.
 
echo $cadenaconfotos
Ahora en el server B se escribe por pantalla la cadenadefotos.
El serverA, lee esa cadena y AHORA si la guarda.

Creo que ese es el problema

Saludos
  #6 (permalink)  
Antiguo 01/02/2008, 10:49
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Es verdad radamantys, no quiero que escriba o responda nada en pantalla, lo unico que quiero es que abra y escriba en el txt la cadena de fotos (foto1.jpg;foto2.jpg;etc;etc;).
Gracias x la respuesta



Cita:
Iniciado por GatorV Ver Mensaje
Cambia esta linea:
Código PHP:
$fp=fopen("fotos/txt/fotosVarias.txt","w"); 
Por esta:
Código PHP:
$fp=fopen("fotos/txt/fotosVarias.txt","w") or die( "No se pudo abrir el archivo" ); 
Para que verifiques si te creo o no el archivo.

Saludos.
Lo he probado, pero no es eso
No da el error ni cuando lo abre ni cuando lo escribe.
Creo que el problema anda por aca
Código PHP:
$archivo "http://www.otro-server.com/scanFotos.php";
$f fopen($archivo,"r");
$news fread($f,filesize($archivo));
fclose($f); 
Porque cuando en el server B, ejecuto el archivo scanFotos.php, me lee el directorio y crea el txt perfectamente.


Saludos.

Última edición por gera7; 01/02/2008 a las 11:00
  #7 (permalink)  
Antiguo 01/02/2008, 11:17
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Leer estructura de directorio de otro servidor

Cita:
Es verdad radamantys, no quiero que escriba o responda nada en pantalla, lo unico que quiero es que abra y escriba en el txt la cadena de fotos (foto1.jpg;foto2.jpg;etc;etc;).
Gracias x la respuesta
El problema es que quieras o no quieras escribir nada. Sino que para que el server A lea algo de la pagina del server B, debes escribirle algo. No puedes leer nada que no hayas escrito, Aunque lo hayas escrito en un fichero de texto con el server B, el server A no tiene conciencia, ni idea de ese fichero de texto, el server A solo leera lo que le responda el serverB, y eso se hace con el "echo"

Abre el mozilla y escribe la direccion de tu server B http://www.otro-server.com/scanFotos.php. Despues pulsa sobre el boton derecho y abre el codigo fuente. Probablemente este estara vacio, no???. Pues esa es la informacion que recoge el server A.

Un ejemplo por ejemplo:

Hay 2 tios A, B en 2 torres separadas. El A le pide al B que haga lo que tiene que hacer. En eso momento el B se entra en la casetilla y prepara la informacion sobre las fotos y la guarda en una caja y la coloca al lado suyo. Despues el B le enseña un folio en blanco ( porque no le has dicho que es escriba algo). El tio de la torre A, desde su catalejo lee ese folio, y lo guarda en otra caja. Pues algo asi.
El server A cuando pide informacion(hace un fopen) al server B actua de cliente (como cuando escribes la url en tu explorador web). Y solo lee la informacion que le enseñan. Solo lee el codigo fuente.

Espero haberme explicado.
Saludos

Última edición por radamantys; 01/02/2008 a las 11:30
  #8 (permalink)  
Antiguo 01/02/2008, 11:45
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Esta perfectamente claro tu ejemplo.
Probé meterle un echo pero sigo sin poder escribir en el txt.

Gracias radamantys. Ni bien tenga la solucion la posteo.

Saludos.
  #9 (permalink)  
Antiguo 01/02/2008, 12:00
 
Fecha de Ingreso: enero-2008
Mensajes: 25
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

A ver, gera7, lo que no acabamos de entender es para qué quieres escribir en el txt, si luego no lo pides desde el servidor A.

Estamos mezclando aquí dos problemas y nos estamos confundiendo. El problema es que no escribe nada en el txt o el problema es que el servidor A no recibe nada? O ambos?
  #10 (permalink)  
Antiguo 01/02/2008, 12:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Leer estructura de directorio de otro servidor

Si se ejecuta bien desde el server B, entonces es probable que no este ni si quiera llamando al archivo el server A.

Una causa probable es que tengas desactivado allow_url_fopen, por lo que no puedes leer urls, así que tendrás que usar la librería cURL o usar fsockopen para enviar una petición al archivo en el ServerB.

Saludos.
  #11 (permalink)  
Antiguo 01/02/2008, 12:15
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Cita:
Iniciado por Nenillo Ver Mensaje
A ver, gera7, lo que no acabamos de entender es para qué quieres escribir en el txt, si luego no lo pides desde el servidor A.

Estamos mezclando aquí dos problemas y nos estamos confundiendo. El problema es que no escribe nada en el txt o el problema es que el servidor A no recibe nada? O ambos?
Nenillo, perdon pero quizas no me exprese bien.
El problema es al crear el txt.
El paso final seria hacer una lectura de ese txt desde el servidor A con un fopen para trabajar con esos datos.

Saludos.
  #12 (permalink)  
Antiguo 01/02/2008, 12:29
 
Fecha de Ingreso: enero-2008
Mensajes: 25
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Entonces, olvidándonos del servidor A, el problema está únicamente en el servidor B.

Dices que no te da ningún error pero después de ejecutar el script del servidor B el txt está vacío.

Antes del fopen del script B haz:

var_dump($cadenaconfotos);

Para comprobar que realmente se ha recopilado la información que necesitas.
  #13 (permalink)  
Antiguo 01/02/2008, 13:34
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Cita:
Iniciado por GatorV Ver Mensaje
Si se ejecuta bien desde el server B, entonces es probable que no este ni si quiera llamando al archivo el server A.

Una causa probable es que tengas desactivado allow_url_fopen, por lo que no puedes leer urls, así que tendrás que usar la librería cURL o usar fsockopen para enviar una petición al archivo en el ServerB.

Saludos.
A allow_url_fopen lo tengo activado, justamente estaba probando por el lado de cURL. No lo he usado nunca pero vamos a ver que sale.
Gracias GatorV.

Cita:
Iniciado por Nenillo Ver Mensaje
Entonces, olvidándonos del servidor A, el problema está únicamente en el servidor B.

Dices que no te da ningún error pero después de ejecutar el script del servidor B el txt está vacío.

Antes del fopen del script B haz:

var_dump($cadenaconfotos);

Para comprobar que realmente se ha recopilado la información que necesitas.
Gracias Nenillo, hice un var_dump pero los datos los arma bien.
Saludos.
  #14 (permalink)  
Antiguo 01/02/2008, 14:24
 
Fecha de Ingreso: enero-2008
Mensajes: 25
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Si lo hace bien, entonces cual es la necesidad de escribirlos en un fichero txt? Puedes leer directamente el script php desde el servidor A.

Si aún así quieres escribir en el fichero, si no escribe nada y no te da error, puede que sea porque tengas los errores desactivados, comprueba en cada llamada qué te devuelve.

var_dump($fp);
var_dump(frwite(...));
  #15 (permalink)  
Antiguo 01/02/2008, 15:42
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Leer estructura de directorio de otro servidor

Cita:
Iniciado por Nenillo Ver Mensaje
Si lo hace bien, entonces cual es la necesidad de escribirlos en un fichero txt? Puedes leer directamente el script php desde el servidor A.

Si aún así quieres escribir en el fichero, si no escribe nada y no te da error, puede que sea porque tengas los errores desactivados, comprueba en cada llamada qué te devuelve.

var_dump($fp);
var_dump(frwite(...));
Si, el tema es que no sabia como retornar el valor de la variable $cadena.



Bueno....solucionado, ahora me funciona. Cambié :
Código PHP:
$f fopen($archivo,"r");
$news fread($f,filesize($archivo));
fclose($f); 
Por esto :
Código PHP:
$f fopen($archivo,"r");
    
$cadena="";
    while (!
feof($f)) {
      
$c .= fread($f8192);
    }
fclose($f); 
El tema es que lo va leyendo de a pedazitos (8192) pero me funciona

Gracias por las respuestas
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 14:10.