代码之家  ›  专栏  ›  技术社区  ›  Tom

使用curl上载文件后,ftp_size返回-1

  •  2
  • Tom  · 技术社区  · 6 年前

    我的脚本用zip打包了一些文件,然后将此zip上载到另一个服务器。上传之后,它会检查ftp和本地的zip大小。如果大小相同,则删除本地zip。

    问题是 ftp_size() 返回- 1。但只有在真正的剧本里。在我的测试脚本中,它运行良好。

    测试脚本的工作方式如下:

    $f = ftp_connect(HOST);
    $res = ftp_login($f, USER, PASS); 
    $fname = 'archive_2018-09-18_13-39';
    $fsize = ftp_size($f, "$fname-img.zip").''; 
    $fsize2 = filesize("backup/$fname-img.zip").''; 
    echo $fsize . '<br>' . $fsize2;
    

    它又回来了:

    22907946995
    22907946995
    

    真正的剧本是这样的:

    $f = ftp_connect(HOST);
    $res = ftp_login($f, USER, PASS); 
    $fname = 'archive_' . date('Y-m-d_H-i');
    
    exec("zip -r -0 backup/$fname-img.zip  \"website\" 2>&1");
    exec('curl -T "' . "backup/$fname-img.zip" . '" ftp://' . HOST . ' --user ' . USER . ':' . PASS . ' 2>&1');
    
    $fsize = ftp_size($f, "$fname-img.zip").''; 
    $fsize2 = filesize("backup/$fname-img.zip").''; 
    echo $fsize . '<br>' . $fsize2;
    

    这表明:

    -1
    22907946995
    

    真正的脚本可以上传文件。它只是在ftp服务器上没有显示正确的大小。 所以这不是文件大小的问题,也不是ftp连接的问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Martin Prikryl    6 年前

    尝试移动 ftp_connect 只有在接到电话后 curl . 如果使用不同的连接上载文件,可能会涉及一些缓存,以阻止FTP服务器立即返回正确的大小。


    尽管我强烈建议您使用PHP函数来上传文件。