2011-11-21 81 views
8

我有這個代碼的小問題。該腳本連接,但它不會給我位於根目錄中的文件夾...我錯過了什麼?PHP的FTP ftp_nlist不工作​​,返回布爾值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; 

它輸出

Connected as [email protected]$ftp_server; 

boolean false 

爲什麼它不會列出文件?

我可以

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

非常快的解決這個問題......但最簡單的部分是不是有什麼即時尋找,當錯誤發生時,我不會學到任何東西

+0

是否打開了錯誤報告? –

+0

error_reporting(E_ERROR | E_WARNING | E_PARSE); – Master345

+0

更改爲error_reporting(E_ALL);並且什麼也沒有 – Master345

回答

35

ftp_nlist()回報false。我猜你需要使用被動傳輸:

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

Generell,我建議使用一個CLI工具像ftp或圖形用戶界面的客戶端像Filezilla的解決此。日誌/輸出非常非常有用。

HTH

+0

所以有一些log.log應該有一個錯誤writeware,是嗎? – Master345

+0

我沒有看到文檔中的任何內容,我沒有嘗試過。我沒有任何FTP服務器。 :)它工作? – Till

+0

設置被動模式解決了我的問題。像這樣的事情必須記錄! – MilanG

0

我也只是建議,確認誰,你在哪裏,以確保權限和你所期望的實際結果是真實的(有點完整性檢查過一段時間是健康的)。

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

,並在連接之後爲用戶則

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

如果你可以從命令行做這些事情的目錄此用戶列表的內容,那麼你應該對你的方式很好。

+0

我很早以前用一個簡單的file_get_contents(URI USER PASS)解決了這個問題,但是你的想法很好,謝謝! – Master345