即使使用被动模式和不同的用户,PHP ftp_nlist()也会返回bool(false)

时间:2015-08-15 18:05:11

标签: php ftp

我目前正在编写一个脚本,用于备份我在服务器上的文件,但是遇到了一个重大问题。大约30分钟前,我能够使用相同的脚本连接,列出我的文件,然后下载它们。但是现在当我尝试连接时,它会连接,就是这样,我不能ftp_nlist这些文件,因为当我这样做时只返回bool(false)。我读了一些其他帖子,我应该尝试使用ftp_pasv将被动模式设置为true,但它没有改变任何内容。我也试过其他用户做同样的事情。我尝试使用filezilla上的凭据并将其连接并允许我下载没有任何问题。任何帮助将不胜感激,我将发布以下代码。

PHP:

连接到FTP

$ftp_server = "Hidden for security";
$ftp_user = "Hidden for security";
$ftp_pass = "Hidden for security";
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 
ftp_pasv($conn_id, true);

在FTP上获取文件名

$contents = ftp_nlist($conn_id, ".");
$rm = array(0, 1, 2, 3,);
foreach($rm as $value) {
    unset($contents[$value]);
}
$contents = array_values($contents);

在localhost上获取文件名

$dir = scandir("images/");
$rmval = array(0, 1, 2);
foreach ($rmval as $val) {
    unset($dir[$val]);
}
$dir = array_values($dir);

尝试登录

if (ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    //echo "Connected";
    $counter = 0;
    var_dump($contents);

    /*foreach ($ftp_content as $file) {
        ftp_get($conn_id, "images/" . $ftp_content[$counter], $ftp_content[$counter], FTP_BINARY);
        $counter++;
    }*/
} else {
    echo "Couldn't Connect";
}

关闭FTP连接

ftp_close($conn_id); 

1 个答案:

答案 0 :(得分:0)

问题是我在建立与FTP服务器的连接之前尝试列出我的文件。在$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass)修复我的问题后添加$conn_id。现在我能够评估它是真还是假,并根据结果运行不同的代码。