【发布时间】:2015-09-30 02:32:55
【问题描述】:
我尝试了多种方式来使用 PHP 中的 FTP 函数上传文件。但这对我不起作用。我不知道我在这段代码中犯了什么错误。我也给出了本地文件路径或另一个服务器文件路径,但在这两种情况下它都不起作用。我在下面给出了我的代码。谁能帮忙找出我的问题?
/* Source File Name and Path */
$backup_file = '/var/www/html/artbak/assets/uploads/edi/test.txt';
//$backup_file = '/workspace/all-projects/artbak/assets/uploads/edi/test.txt';
$remote_file = $backup_file;
$ftp_host = 'hostname'; /* host */
$ftp_user_name = 'username'; /* username */
$ftp_user_pass = 'password'; /* password */
/* New file name and path for this file */
$local_file = '/public_html/example.txt';
/* Connect using basic FTP */
$connect_it = ftp_connect( $ftp_host );
/* Login to FTP */
$login_result = ftp_login( $connect_it, $ftp_user_name, $ftp_user_pass );
/* Download $remote_file and save to $local_file */
if ( ftp_put( $connect_it, $local_file, $remote_file, FTP_BINARY ) ) {
echo "WOOT! Successfully written to $local_file\n";
}
else {
echo "Doh! There was a problem\n";
}
/* Close the connection */
ftp_close( $connect_it );
以下代码适用于本地到服务器上传,但不适用于服务器到服务器上传。它显示服务器未连接。请各位大侠给点思路。我在这个概念上更加挣扎。
$ftp_host = 'hostname'; /* host */
$ftp_user_name = 'username'; /* username */
$ftp_user_pass = 'password'; /* password */
// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
$file = "dummy.txt";
$remote_file = "receiveDummy.txt";
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection
ftp_close($conn_id);
【问题讨论】:
-
给定的 FTP 详细信息是目标服务器,是否正确或我需要源服务器详细信息?
-
尝试使用
error_reporting(E_ALL)开启错误并在else分支中输出error_get_last()。 -
好的,我会检查的。错误显示是 ftp_login()、ftp_put() 和 ftp_close() 期望参数 1 是资源,给定的布尔值。
-
我检查了 FTP 详细信息,一切正常。那我怎么能得到错误。
-
我给出的源路径是 SFTP ,目标路径是 FTP 。有没有这方面的问题。我觉得这样不行。
标签: php codeigniter ftp