ftp zip文件从一台服务器到另一台服务器

时间:2013-05-22 16:57:11

标签: php ftp

我正在尝试通过ftp将zip文件从一台服务器传输到我的服务器,以便我可以使用文件中的数据来更新我的数据库表。这是我的ftp.php文件:

    <?php
header('Content-type: text/html; charset=utf-8');
$date = "2013-05-21-11-19-40";
$ftp_server="ftp.server.com";
$ftp_user_name="BookCellar";
$ftp_user_pass="*****";
$file = "/reports/other/compreport_abebooks_" .$date. ".zip";//tobe uploaded
$remote_file = "/chroot/home/bookcellaronline.com/html/testbcos/accounting/compreport_abebooks_" .$date. ".zip"; 

?>

和我的ftpUpload.php文件是:

    <?php
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($file));
header('Content-Type: application/zip');
require_once('ftp.php');

// set up basic connection
$conn_id = ftp_ssl_connect($ftp_server);//ftp_connect

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
// check connection
if ((! $conn_id ) || (! $login_result )) {
echo "FTP connection has failed!" ;
exit;

} else {
echo "Connected for user $ftp_user_name" ;
}

ftp_chdir($conn_id, '/home/bookcell/bookcellaronline.com/html/testbcos/accounting/');

// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
echo "successfully uploaded $file\n";
exit;
} else {
echo "There was a problem while uploading $file\n";
exit;
}
echo $php_errormsg;
// close the connection
ftp_close($conn_id);
?>

当我运行这些时,我得到错误信息:

    [<a href='function.ftp-put'>function.ftp-put</a>]: failed to open stream: No such file or directory in /chroot/home/bookcell/bookcellaronline.com/html/testbcos/accounting/ftpUpload.php on line 25

第25行是:

    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {

我已经研究了SO上的一些其他帖子,但还没有找到解决方案。我的连接有效,但我无法传输文件。 我如何(如果可能的话)将其传输到我的服务器?

编辑:我错过了一个事实,我不仅需要连接到他们的服务器($ file)和我的服务器($ remote_file)????

3 个答案:

答案 0 :(得分:2)

您无法将路径放到目标文件

$remote_file = "/chroot/home/bookcellaronline.com/html/testbcos/accounting/compreport_abebooks_" .$date. ".zip";

e.g。 - 这不起作用

ftp_put($conn, '/www/site/file.html','c:/wamp/www/site/file.html',FTP_BINARY);

你必须把

<?php
ftp_chdir($conn, '/www/site/');
ftp_put($conn,'file.html', 'c:/wamp/www/site/file.html', FTP_BINARY ); 

FTP服务器隐藏其绝对路径/home/bookcell/bookcellaronline.com/html/

所有文件夹必须相对于root

ftp_chdir($conn_id, '/testbcos/accounting/');

测试ftp_chdir的结果!你在正确的目录中吗?

echo ftp_pwd($conn_id);

尝试通过浏览器连接到FTP服务器。

ftp://BookCellar@ftp.server.com

你得到的是/ root。您在浏览器中看到的文件夹和文件位于root目录下。

更新:开箱即用的示例。

$password =行必须替换为Download pass

ftp.php

<?php
    $password = "????";
    $resource = ftp_connect('ftp.strato.com');
    $login = ftp_login($resource, 'ftp_mx_all@moskito-x.de', $password);
    $list = ftp_rawlist($resource, '/');
    print_r($list);
?>

你将得到print_r

Array ( [0] => drwxr-xr-x 2 ftp ftp 4096 May 23 20:15 aFolder [1] => -rw-r--r-- 1 ftp ftp 167 May 23 20:25 tutorial.txt )

我们可以看到有一个文件夹aFolder和一个文件tutorial.txt 我们对文件夹aFolder中的文件感兴趣吗? 所以用

替换$ list =
$list = ftp_rawlist($resource, '/aFolder');

再次运行php脚本。输出:

Array ( [0] => drwxr-xr-x 3 ftp ftp 4096 May 23 19:24 .. [1] => -rw-r--r-- 1 ftp ftp 167 May 23 20:25 tutorial.txt [2] => -rw-r--r-- 1 ftp ftp 271 May 23 21:16 tutorial.zip )

现在我们要下载aFolder/tutorial.txtprint_r($list);下方添加以下内容。

     echo "<br />\n";
     $local_file = "tmp.txt" ;
     $file = ftp_get($resource, $local_file, '/aFolder/tutorial.txt',FTP_ASCII);
      if ($file) {
         echo "$local_file has been successfully written\n";
     } else {
         echo "An error has occurred\n";
     }

输出:

enter image description here

php脚本所在的文件夹已更改。

enter image description here

现在有一个新文件tmp.txt

如果你带这个小脚本运行。我们可以走得更远。

来自我们的聊天:
您的服务器不允许对URL进行ftp调用。

allow_url_fopen = ON

echo ini_get('allow_url_fopen');

if (!ini_get('allow_url_fopen')) {
    ini_set('allow_url_fopen', 1);
}

echo ini_get('allow_url_fopen'); 

然后再试一次。

答案 1 :(得分:2)

set_time_limit(0);
exec("wget --continue http://example.com/site.zip");
exit;

答案 2 :(得分:0)

在第一个摘录中将远程磁贴更改为

`$remote_file = "compreport_abebooks_" .$date. ".zip";`
在你进入目录之前的

另请注意,您在ftp_chdir调用中引用的目录与顶部引用的$ remote_file中的目录不同。

 /home/bookcell/bookcellaronline.com/html/testbcos/accounting/

vs

 /chroot/home/bookcellaronline.com/html/testbcos/accounting/