我正在尝试使用ftp_get和ftp_nlist从其他域获取多个文件。 ftp_nlist需要一个资源和一个字符串,但下面返回
ftp_nlist()期望参数1为资源,在
中给出null
和
为foreach()提供的参数无效
<?php
// Connect and login to FTP server
$ftp_server = "hostname";
$ftp_username ="username";
$ftp_userpass = "password";
$includes = "/directory/";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
// Get file list
$contents = ftp_nlist($conn_id, $includes);
// Loop through for file 1
foreach ($contents as $file) {
$local_file = '/path/to/file.php';
$server_file = '/path/to/file.php';
ftp_get($conn_id, $local_file, $server_file, FTP_BINARY);
}
// Loop through for file 2
foreach ($contents as $file) {
$local_file = '/path/to/file.php';
$server_file = '/path/to/file.php';
ftp_get($conn_id, $local_file, $server_file, FTP_BINARY);
}
// close connection
ftp_close($ftp_conn);
?>
答案 0 :(得分:2)
您传递给$conn_id
的变量ftp_nlist()
未定义。您需要在所有 $ftp_conn
函数中传递ftp_*
。 (在你的情况下ftp_get()
)
同时检查ftp_close()
,确保您没有忘记关闭连接。
我建议使用ftp_
函数的包装器(如https://github.com/dg/ftp-php)来简化调试。您将能够使用Exceptions
并像这样抓住它们:
try {
$ftp = new Ftp;
$ftp->connect($ftp_server);
$ftp->login($ftp_username, $ftp_userpass);
$ftp->nlist($includes);
} catch (FtpException $e) {
echo 'Error: ', $e->getMessage();
}