Я хочу создать zip-файл и скопировать все папки и файлы из каталога в него. Он успешно создан и содержит файлы и папки, но дерево файлов не сохраняется, все находится в корневом каталоге.Сохраните структуру папок при создании архива Zip
Мой каталог:
folder/
test.txt
test2.txt
test.php
архив ZIP:
folder/
test.txt
test2.txt
test.php
Это мой код:
public function createZipFromDir($dir, $zip_file) {
$zip = new ZipArchive();
if(true !== $zip->open($zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)) {
return false;
}
$this->zipDir($dir, $zip);
return $zip;
}
public function zipDir($dir, $zip) {
$dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
$files = scandir($dir);
foreach($files as $file) {
if(in_array($file, array('.', '..'))) continue;
if(is_dir($dir . $file)) {
$zip->addEmptyDir($file);
$this->zipDir($dir . $file, $zip);
} else {
$zip->addFile($dir . $file, $file);
}
}
}
$zip = $this->createZipFromDir($rootPath, $archiveName);