2012-09-01 63 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,我得到了「意外的歸檔結束」錯誤。 –