-1

编辑:这完全描述了我的问题,但我无法用 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 文件的传输有什么问题吗?

感谢您的时间。

4

2 回答 2

1

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

于 2012-09-02T08:54:30.913 回答
0

您可以尝试以二进制模式打开您的 zip 文件。推荐

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

fopen('files-backup.zip', 'rb');
于 2012-09-01T16:51:08.797 回答