使用php无法正常将文件从一台服务器上传到另一台服务器?

时间:2015-07-11 10:15:25

标签: php codeigniter ftp

我已尝试过多种方式使用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);

1 个答案:

答案 0 :(得分:0)

感谢您的支持。我很高兴发布这个答案几天的工作。只需要避开目标服务器路径/public_html/test.txt而不是test.txt。如果您有任何子文件夹,请提供sample/test.txt。请检查以下代码,对于像我这样的人来说,它是完整的。

/* Source File Name and Path */
            $remote_file = '/var/www/html/artbak/assets/uploads/edi/test.txt';

            $ftp_host = 'hostname'; /* host */
            $ftp_user_name = 'username'; /* username */
            $ftp_user_pass = 'password'; /* password */ 

            /* New file name and path for this file */
            $local_file = 'test.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没有通过php代码连接。现在我也解决了这个问题。因为我在本地工作的代码已经知道了。为此,我引用了以下链接来解决服务器中的防火墙块Can't connect to FTP with PHP ftp_connect from localhost。所以它运作良好。