2012-09-01 61 views
-1

编辑:这正好说明我的问题,但我不能用PHP克服它:http://kb.winzip.com/kb/entry/149ZIP档案变为损坏后,才上传PHP到FTP

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

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

我敢肯定,档案是确定的,而是,故障出在文件的传输:

$conn_id = ftp_connect("ftp.example.com"); 
$login_result = ftp_login($conn_id, "johnny1", "[email protected] $tr0nG [email protected]!"); 
$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文件的传输,你可以看到从这里?

谢谢你的时间。

+0

查看上传的zip文件是否会产生任何有趣的结果? –

+0

@arxanas Nope ...刚开始是这样的:PK''!A!'E menable_javascript.phpíXmoÛ6þ... –

+0

每个FTP连接只写一个文件怎么样? –

回答

1

我测试过我的Ubuntu系统上的代码和它的工作没有问题。
这可能是一个FTP服务器问题;你应该尝试在另一个FTP服务器上上传文件。

0

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

为便于携带,强烈建议您在使用fopen()打开文件时始终使用'b'标志。

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

让我试试看。 ;) –

+0

对不起。这没有用。从WinRAR,我得到了“意外的归档结束”错误。 –