PHP FTP ftp_nlist不起作用,返回布尔值 false

2022-08-30 20:11:33

我对这个代码有一点问题。脚本连接,但它不会给我位于root中的文件夹...我错过了什么?

    $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 $ftp_user@$ftp_server\n";
    } 
    else 
    {
        echo "Couldn't connect as $ftp_user@$ftp_server\n";
    }

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

    ftp_close($conn_id);  

    die;

它输出

Connected as $ftp_user@$ftp_server;

boolean false

为什么它不会列出文件?

我可以非常快速地解决这个问题

  file_exists("ftp//user:pass@host.com") 

...但容易的部分不是我想要的,我不会学到任何东西


答案 1

ftp_nlist()发生错误时返回。我猜你需要使用被动转移:false

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

Generell,我建议通过使用CLI工具或像Filezilla这样的GUI客户端来解决这个问题。日志/输出非常非常有帮助。ftp

呵呵


答案 2

不要惊慌。它很容易解决。只需使用下面给出的代码即可。ftp_login()

ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false); // set ftp option
ftp_pasv($ftp_conn, true); //make connection to passive mode

这段代码解决了我的问题。


推荐