2011-11-21 19 views
8

Tengo un pequeño problema con esta porción de código. La secuencia de comandos se conecta, pero no me da las carpetas que se encuentran en la raíz ... me falta algo?PHP FTP ftp_nlist no funciona, devuelve booleano falso

$ftp_server = "ftp.something.com"; 
    $ftp_user = "user"; 
    $ftp_pass = "pass"; 

    // set up a connection or die 
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

    // try to login 
    if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
    { 
     echo "Connected as [email protected]$ftp_server\n"; 
    } 
    else 
    { 
     echo "Couldn't connect as [email protected]$ftp_server\n"; 
    } 

    $contents = ftp_nlist($conn_id, "."); 
    var_dump($contents); 

    ftp_close($conn_id); 

    die; 

Genera

Connected as [email protected]$ftp_server; 

y

boolean false 

¿Por qué no va a listar los archivos?

i podría resolver este muy rápido con

file_exists("ftp//user:[email protected]") 

... pero la parte más fácil no es lo que estoy buscando, no me gustaría aprender nada

+0

¿Está activado el informe de errores? –

+0

error_reporting (E_ERROR | E_WARNING | E_PARSE); – Master345

+0

cambiado a error_reporting (E_ALL); y todavía nada – Master345

Respuesta

35

ftp_nlist() vuelve false cuando se produce un error. Supongo que es necesario utilizar la transferencia pasiva:

// after ftp_login(...) 
ftp_pasv($conn_id, true); 

general: trabajos, me gustaría recomendar la solución de problemas mediante el uso de una herramienta como una CLI ftp o una interfaz gráfica de usuario-cliente como Filezilla. El registro/salida es muy, muy útil.

HTH

+0

, por lo que hay algún software de log.log que debería tener un error escrito, ¿verdad? – Master345

+0

No veo nada en los documentos y no lo he probado. Y no tengo ningún servidor FTP. :) ¿Funciona? – Till

+0

Configuración del modo pasivo problema resuelto para mí. ¡Cosas como esta deben estar documentadas! – MilanG

0

que habría también acaba de sugerir que confirma quién y dónde se encuentra para asegurarse de que los permisos y los resultados reales que se pueden esperar son verdaderas (un poco de comprobación de validez de vez en cuando está sano).

echo shell_exec('whoami')." is who i am </br>"; 

y después de que se conecte como usuario entonces

echo "Current directory is now: " . ftp_pwd($conn_id) . "</br>"; 

si puede hacer estas cosas desde la línea de comandos como este usuario y la lista de contenidos del directorio, entonces debería estar bien en su camino.

+0

Lo resolví hace mucho tiempo con un simple archivo_get_contents (URI USER PASS), pero su idea es buena, ¡gracias! – Master345

Cuestiones relacionadas