2011-07-19 18 views
0

私が管理しているオープンソースのアプリケーションの1つ(phpMySQLAutoBackup)は、PHP gzencodeを使用してエクスポートされたSQLデータを圧縮します。 PHP CURLを介して圧縮ファイルをリモートサーバに転送するオプションがありますが、gzencodedファイルのリモートコピーが壊れてしまいます。PHP CURLでサーバー間転送中にGZIPファイルが破損する

LOCALLYに保存されたgzファイルが展開されていません。ただし、リモートコピーをチェックすると、転送後または転送中に破損しています。 PHPのCURLを試してみて、PHPのftp_fputは両方のファイルを破壊しますが、データがエンコードされているときだけです! PHP gzencodeをそのままにして(プレーンテキストを転送する)、データはエラーなく転送されます。

したがって、gzencodedデータのサーバー間転送中にデータを保存するにはどうすればよいですか?

BTW:PHP CURLとPHP ftp_fputの両方で既にBINARYモードを試しています。

答えて

0

「破損」とはなんですか? .gzはまったく解凍されませんか?途中の数バイトが違うのですか?ファイルの長さは?短い?

結果の破損したファイルをテキスト/ 16進エディタで見ましたか?おそらく、PHPの警告がデータに埋め込まれている可能性があります。

+0

こんにちはマーク、ご返信ありがとうございます。 圧縮します - 元のデータは約900kb、gzencodedは120kbです。 CORRUPTED - このコンテキストでは、gzファイルが開かれ、抽出が試行されたときに「破損しています」というメッセージが表示されます。 「エラー:予期しないファイルの終了が発生しました。 then "エラー:無効な圧縮データを展開する。" となり、データの抽出に失敗します。 – DWalkercouk

+1

問題が見つかりました。それは問題であるPHPではありません。それは私のFTPクライアントでした! gzファイルのコピーをダウンロードするたびに、バイナリモードではなくASCIIモードでダウンロードされました(通常、すべてのサイトでデフォルトでバイナリに設定されていますが、これを忘れてしまったばかりで、すべてのgzファイルがあった場所)。 まあ、一日が無駄です! このエラーが発生した場合は、zipファイルをダウンロードしてください。 "エラー:予期しないファイルの終了が発生しました。 と 「エラー:無効な圧縮データを展開する」 転送モードがBINARYになるようにFTPクライアントの設定を確認してください。 – DWalkercouk

関連する問題