PHPでZIPARCHIVEと破損の抽出

msoutopico:

私はいくつかのアップロードを解凍する必要がありますPHPスクリプトを持っています。アップロードは基本的にカスタム拡張子を持つファイルを圧縮、パックされたフォルダです。

私はではなく、別のマシンに詰め同じフォルダで、一台のマシンに詰め、いくつかのzipファイルに問題が生じています。どちらの場合も、圧縮は同じJavaライブラリを使用して行われます。

これは、どのその後、PHPさらにproceses期待される結果です。 正しい抽出

これは、PHPチョークを行い、破損した結果、次のとおりです。 破損した抽出

私は彼らの権限を見れば、これは(私が見たもので01_Orig、大丈夫です02_Modif破損しています):パーミッション

私は2つのパッケージを見てみるとunzip -l(最初のものは大丈夫です、もう一つは破損してい):解凍-l

そして、これは(どちらの場合も同じである)私のPHP関数は次のとおりです。

$uploads = "uploads_dir/";
$dir = new DirectoryIterator("uploads_dir/");

foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        $filename = $fileinfo->getFilename();
        $zip = new ZipArchive;
        $res = $zip->open($uploads . $fileinfo);
        if ($res === TRUE) {
            $zip->extractTo($uploads . $filename . "_extracted");
            $zip->close();
        } else {
            echo "Unable to unzip";
        }
    }
}

Both uploads look fine when I manually unzip or open them with 7zip in my Windows machine.

If I create two hex dumps of both zip files and compare them, this is what I get: https://gist.github.com/msoutopico/22a9ef647381c2e4d26313f135c526e2

Thanks a lot in advance for any tips.

UPDATE:

In case it's relevant, the zip files are created (saved) in a linux server, and both machines where this is done (the one that works, and the one that corrupt the package) run Windows 10.

msoutopico :

ソートされました。プラグインのバージョン2からパス区切りを変換するために微調整された\/ファイル名に。さて、プラグインのバージョン3は、両方のマシンにインストールされていたにも関わらず、障害のあるマシンで(その微調整する前のバージョン1、)古いものもありました、代わりにバージョン3だけを使用していた一つであります1つの重複が問題を修正したバージョンを削除します。@pmqsは正しかったです。私はすぐにこの問題を解決する手助けするためにあなたにみんなありがとう!

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=277827&siteId=1