У меня есть PHP скрипт, который должен разархивировать некоторые загрузки. Загружаемые файлы представляют собой упакованные папки, в основном zip-файлы с пользовательским расширением.
У меня проблемы с некоторыми zip-файлами, упакованными на одной машине, но не с той же папкой, упакованной на другой машине. В обоих случаях сжатие выполняется с использованием одной и той же библиотеки Java.
Это ожидаемый результат, который затем PHP далее выполняется: ![correct extraction](https://i.imgur.com/PI0nWMy.png)
Это искаженный результат, который приводит к PHP удушению: ![corrupted extraction](https://i.imgur.com/iXJkxoO.png)
Если я смотрю на их разрешения, это то, что я вижу (01_Orig
все в порядке, 02_Modif
поврежден): ![permissions](https://i.imgur.com/w6L4E1x.png)
Если я посмотрю на два пакета с unzip -l
(первый в порядке, второй поврежден): ![unzip -l](https://i.imgur.com/cYfSoVN.png)
И это моя 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";
}
}
}
Обе загрузки выглядят хорошо, когда я вручную распаковываю или открываю их с помощью 7zip в моей машине Windows.
Если я создаю два шестнадцатеричных дампа обоих zip-файлов и сравниваю их, вот что я получаю: https://gist.github.com/msoutopico/22a9ef647381c2e4d26313f135c526e2
Спасибо много заранее за любые советы.
ОБНОВЛЕНИЕ:
В случае необходимости, почтовые файлы создаются (сохраняются) на сервере linux, и на обеих машинах где это done (тот, который работает, и тот, который повредил пакет), запустите Windows 10.