-1

編集:これは私の問題を正確に説明していますが、PHP では解決できません: http://kb.winzip.com/kb/entry/149

Web サイトのファイルとデータベースのバックアップ コピーを作成し、災害復旧のためにこれらのファイルをリモート FTP サイトに送信する自動バックアップ スクリプトを PHP で作成しています。私の SQL ファイルと ZIP ファイル (My SQL にしゃれはありません) はサーバー上で完全に生成されますが、FTP サイトにアップロードすると ZIP アーカイブが破損します。

それを生成したサーバーから 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 に答える