2011-11-21 33 views
8

Tôi có một vấn đề nhỏ với mã pice này. Kịch bản kết nối, nhưng nó sẽ không cho tôi các thư mục nằm trong thư mục gốc ... tôi đang thiếu cái gì đó?PHP FTP ftp_nlist không hoạt động, trả lại 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; 

Nó ra

Connected as [email protected]$ftp_server; 

boolean false 

Tại sao nó sẽ không liệt kê các tập tin?

tôi có thể giải quyết việc này rất nhanh với

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

... nhưng phần dễ dàng không phải là những gì im tìm kiếm, tôi sẽ không học được gì

+0

Báo cáo lỗi đã được bật chưa? –

+0

error_reporting (E_ERROR | E_WARNING | E_PARSE); – Master345

+0

đã thay đổi thành error_reporting (E_ALL); và vẫn không có gì – Master345

Trả lời

35

ftp_nlist() lợi nhuận false khi một lỗi xảy ra. Tôi đoán bạn cần phải sử dụng chuyển thụ động:

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

Generell, tôi khuyên bạn nên xử lý sự cố này bằng cách sử dụng một công cụ một CLI như ftp hoặc một GUI-client như Filezilla. Nhật ký/đầu ra rất, rất hữu ích.

HTH

+0

vì vậy có một someware một log.log mà nên có một lỗi viết, là phải không? – Master345

+0

Tôi không thấy bất cứ điều gì trong các tài liệu và tôi đã không thử nó. Và tôi không có bất kỳ máy chủ FTP nào. :) Nó có hoạt động không? – Till

+0

Đặt vấn đề chế độ thụ động được giải quyết cho tôi. Những thứ như thế này phải được ghi lại! – MilanG

0

tôi sẽ cũng chỉ đề nghị xác nhận ai và bạn đang ở đâu để đảm bảo rằng quyền và kết quả thực tế bạn mong đợi là đúng (một kiểm tra sanity ít lần trong một thời gian là khỏe mạnh).

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

và sau khi bạn kết nối như người dùng sau đó

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

nếu bạn có thể làm những điều này từ dòng lệnh như người dùng và danh sách này nội dung của thư mục thì bạn nên được tốt trên con đường của bạn.

+0

tôi đã giải quyết vấn đề này từ lâu với một file_get_contents đơn giản (URI USER PASS), nhưng ý tưởng của bạn là tốt, cảm ơn! – Master345

Các vấn đề liên quan