Когда я создаю ZIP-архив с приведенным ниже кодом, я получаю странный пустой файл. Это нормально, когда я добавляю один файл без создания каталога. Я могу открыть архив, распаковать его без ошибок. Я использую WinRar 5.10 (в WinRar 5.0 и ниже, 7zip, WinZip проблем нет).
$zip = new ZipArchive();
$filename = "test112.zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$zip->addEmptyDir('test');
$zip->addFile("apache_pb2.png", 'test/test.png');
$zip->close();
Снимок экрана: CLICK
Есть идеи, что случилось?
Вполне вероятно, что, запустив addEmptyDir
функция, а затем работает addFile
функция в тот же каталог, вы на самом деле создаете два экземпляра test
в глазах некоторых программ Unzip. Как правило, это не будет проблемой, но если вы хотите избежать этого для вашей версии WinRAR, вам следует изменить код следующим образом:
$zip = new ZipArchive();
$filename = "test112.zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
//$zip->addEmptyDir('test'); // Only necessary for directories that will REMAIN empty
$zip->addFile("apache_pb2.png", 'test/test.png');
$zip->close();
addEmptyDir из того, что я вижу в старых версиях, и, согласно документации, не создает последнюю часть пути к папке в виде папки, а создает ее в виде файла без расширения.