【问题标题】:ZIP Archive Becomes Corrupt Only After Upload to FTP From PHP仅在从 PHP 上传到 FTP 后 ZIP 存档才会损坏
【发布时间】:2012-09-01 16:42:14
【问题描述】:

编辑:这完全描述了我的问题,但我无法用 PHP 克服它:http://kb.winzip.com/kb/entry/149

我正在用 PHP 编写一个自动备份脚本,它会制作我网站文件和数据库的备份副本,并将这些文件发送到远程 FTP 站点以进行灾难恢复。我的 SQL 和 ZIP 文件(My SQL 没有双关语)在服务器上完美生成,但是,当我的 ZIP 存档上传到 FTP 站点时,它会损坏。

我从生成它的服务器下载了 ZIP 文件,打开它没有问题。但是,一旦将同一个文件传输到 FTP 站点并从那里下载,似乎没有 ZIP 提取程序能够打开相同的文件。我可以打开我的 SQL 文件没有问题。

我很确定存档没问题,但错误在于文件的传输:

$conn_id = ftp_connect("ftp.example.com");
$login_result = ftp_login($conn_id, "johnny1", "Re@l1y $tr0nG P@5swOrd!");
$dbBackup = fopen('database-backup.sql', 'r');
$filesBackup = fopen('files-backup.zip', 'r');

if (ftp_fput($conn_id, 'database/backup.sql', $dbBackup, FTP_BINARY) && 
    ftp_fput($conn_id, 'files/backup.zip', $filesBackup, FTP_BINARY)) {
  echo "Done!<br>";
} else {
   echo "Failed";
   exit;
}

ftp_close($conn_id);
fclose($dbBackup);
fclose($filesBackup);

从这里可以看到的ZIP文件的传输有什么问题吗?

感谢您的宝贵时间。

【问题讨论】:

  • 以文本形式查看上传的 zip 文件是否会产生任何有趣的结果?
  • @arxanas 不...刚开始是这样的:PK '`!A±€Ã
  • 每个FTP连接只写一个文件怎么样?
  • @arxanas 不...同样的结果。 :(
  • 这可能是 FTP 服务器的问题。您使用的是哪个 FTP 服务器?在哪个平台上,Windows 还是 Linux?您可以尝试将文件上传到另一台服务器上,看看它是否有效?

标签: php file-upload ftp zip corruption


【解决方案1】:

我已经在我的 Ubuntu 系统上测试了您的代码,它运行正常。
这可能是 FTP 服务器的问题;您应该尝试将文件上传到另一个 FTP 服务器。

【讨论】:

    【解决方案2】:

    您可以尝试以二进制模式打开您的 zip 文件。 It's recommended.

    为了可移植性,强烈建议您在使用 fopen() 打开文件时始终使用“b”标志。

    fopen('files-backup.zip', 'rb');
    

    【讨论】:

    • 对不起。那没有用。在 WinRAR 中,我收到“存档意外结束”错误。
    猜你喜欢
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    相关资源
    最近更新 更多