2011-11-21 11 views
8

Mam mały problem z tym picy kodu. Skrypt łączy się, ale nie dostarczy mi folderów znajdujących się w katalogu głównym ... czegoś mi brakuje?FTP FTP ftp_nlist nie działa, zwraca boolean 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; 

wyprowadza ona

Connected as [email protected]$ftp_server; 

i

boolean false 

Dlaczego nie będzie listę plików?

mogę rozwiązać ten bardzo szybko z

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

... ale nie jest łatwa część tego, co im szuka, nie uczyć się niczego

+0

Czy raportowanie błędów jest włączone? –

+0

error_reporting (E_ERROR | E_WARNING | E_PARSE); – Master345

+0

zmieniono na error_reporting (E_ALL); i wciąż nic – Master345

Odpowiedz

35

ftp_nlist() powraca false gdy wystąpi błąd. Zgaduję, trzeba użyć pasywnego transferu:

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

Generell, polecam ten rozwiązywania problemów za pomocą narzędzia CLI jak ftp lub GUI klienta jak Filezilla. Log/output jest bardzo, bardzo pomocny.

HTH

+0

, więc jest jakiś plik log.log, który powinien mieć napisany błąd, czy tak? – Master345

+0

Nie widzę niczego w dokumentach i nie próbowałem go. I nie mam żadnego serwera FTP. :) Czy to działa? – Till

+0

Ustawienie dla mnie problemu rozwiązanego w trybie pasywnym. Takie rzeczy muszą być udokumentowane! – MilanG

0

Chciałbym również zasugerować potwierdzając tylko, kto i gdzie jesteś, aby upewnić się, że uprawnienia i rzeczywiste wyniki można oczekiwać są prawdziwe (trochę testow raz na jakiś czas jest zdrowa).

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

i po podłączeniu jako użytkownik następnie

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

czy można zrobić te rzeczy z linii poleceń jako ten użytkownik i lista zawartości katalogu, to powinno być na dobrej drodze.

+0

Rozwiązałem to dawno temu za pomocą prostego file_get_contents (URI PASS USER), ale twój pomysł jest dobry, dziękuję! – Master345