2011-11-21 11 views
8

Ho un piccolo problema con questo pice di codice. Lo script si connette, ma non mi darà le cartelle che si trovano in root ... mi manca qualcosa?FTP FTP ftp_nlist non funziona, restituendo booleano false

$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; 

Produce

Connected as [email protected]$ftp_server; 

e

boolean false 

Perché non elencare i file?

ho potuto risolvere questo molto veloce con

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

... ma la parte più facile non è quello che im cercando, non vorrei imparare nulla

+0

La segnalazione degli errori è attivata? –

+0

error_reporting (E_ERROR | E_WARNING | E_PARSE); – Master345

+0

cambiato in error_reporting (E_ALL); e ancora nulla – Master345

risposta

35

ftp_nlist() rendimenti false in caso di errore. Sto indovinando è necessario utilizzare il trasferimento passivo:

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

Generell, io consiglierei la risoluzione di questo utilizzando uno strumento a riga di comando come ftp o una GUI-cliente come Filezilla. Il log/output è molto, molto utile.

HTH

+0

quindi c'è qualcosa di log.log che dovrebbe avere un errore scritto, giusto? – Master345

+0

Non vedo nulla nei documenti e non l'ho provato. E non ho alcun server FTP. :) Funziona? – Till

+0

Impostazione del problema risolto in modalità passiva per me. Cose come questa devono essere documentate! – MilanG

0

Vorrei anche solo suggerire conferma chi e dove siete a fare in modo che i permessi e gli effettivi risultati che ci si aspetta sono vere (un po 'di controllo di integrità una volta ogni tanto è sano).

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

e dopo aver collegato come utente quindi

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

se si può fare queste cose da linea di comando come questo utente ed elenca il contenuto della directory allora si dovrebbe essere sulla buona strada.

+0

Ho risolto questo molto tempo fa con un semplice file_get_contents (URI USER PASS), ma la tua idea è buona, grazie! – Master345