PHP ftp_nlist() 即使在被动模式和不同的用户下也返回 bool(false)
PHP ftp_nlist() returning bool(false) even with passive mode and different users
我目前正在制作一个脚本来备份我服务器上的文件,但遇到了一个重大问题。大约 30 分钟前,我能够使用相同的脚本进行连接、列出我的文件并下载它们。但是现在当我尝试连接时,它连接了,就是这样,我不能 ftp_nlist
文件,因为当我这样做时只是 returns bool(false)
。我在其他一些 post 上读到我应该尝试使用 ftp_pasv
将被动模式设置为 true 但它没有改变任何东西。我也尝试过其他做同样事情的用户。我尝试在 filezilla 上使用凭据,它已连接并允许我毫无问题地下载。任何帮助将不胜感激,我将 post 下面的代码。
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);
获取本地主机上的文件名
$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);
问题是我试图在与 FTP 服务器建立连接之前列出我的文件。在 $conn_id
之后添加 $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass)
解决了我的问题。现在我可以评估它是真还是假,并且 运行 根据结果使用不同的代码。
我目前正在制作一个脚本来备份我服务器上的文件,但遇到了一个重大问题。大约 30 分钟前,我能够使用相同的脚本进行连接、列出我的文件并下载它们。但是现在当我尝试连接时,它连接了,就是这样,我不能 ftp_nlist
文件,因为当我这样做时只是 returns bool(false)
。我在其他一些 post 上读到我应该尝试使用 ftp_pasv
将被动模式设置为 true 但它没有改变任何东西。我也尝试过其他做同样事情的用户。我尝试在 filezilla 上使用凭据,它已连接并允许我毫无问题地下载。任何帮助将不胜感激,我将 post 下面的代码。
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);
获取本地主机上的文件名
$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);
问题是我试图在与 FTP 服务器建立连接之前列出我的文件。在 $conn_id
之后添加 $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass)
解决了我的问题。现在我可以评估它是真还是假,并且 运行 根据结果使用不同的代码。