обычно следующий скрипт для создания и заполнения zip-архива работает правильно как на локальном, так и на других серверах:
$zip = new ZipArchive();
$zip->open($filename, ZipArchive::CREATE);
foreach( $pathToAssets as $nPath ) {
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator( $nPath ), RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file) {
if( $file->getFilename() != '.' && $file->getFilename() != '..' ) {
$filePath = $file->getRealPath();
$temp = explode("/", $name);
array_shift( $temp );
$nName = implode("/", $temp);
$zip->addFile($filePath, $nName);
}
}
}
$zip->close()
но на моем новом сервере этот сценарий вместо создания папок, подпапок и файлов создает только файлы с таким именем «folder \ subfolder \ file.extension»
например:
вместо создания папки css с подпапкой начальной загрузки, которая содержит файл style.css, он создает файл с именем ‘css \ bootstrap \ style.css’
Я не могу понять, где предпринять действия на сервере, чтобы изменить это поведение.
у вас есть предложения для меня?
Спасибо
Метод addfile () добавляет файл в архив, не создает отсутствующие каталоги.
Для создания структуры каталогов внутри архива используйте метод addEmptyDir ()
Других решений пока нет …