Структура каталогов испорчена при распаковке в Linux, в то время как zip-файл создается в Windows с использованием php ZIPArchive
Создание Zip в Windows ---> Разархивировать в Windows -> Нет isuses Создание Zip в Linux ---> Разархивировать в Linux -> Нет isuses Создание Zip в Windows ---> Разархивировать в Linux ---> Файлы не распаковываются в нужные каталоги
Структура папки для архивирования
b2c -> данные d.xml ---> метатада m.xml
Создайте почтовый индекс, используя код ниже на платформе Windows. Теперь распакуйте в Linux. Вот структура, вместо того, чтобы помещать d.xml в b2c \ data, она создает файл data \ d.xml.
b2c данные \ d.xml метаданные \ m.xml
Исходный код
<?php
define('DS', DIRECTORY_SEPARATOR);
/*
$folder_to_zip = 'c:'. DS .'temp'. DS . 'b2c';
$zip_file = 'c:' . DS . 'temp' .DS . 'b2c'. DS . 'b2c.zip';
create_zip($folder_to_zip, $zip_file);
$folder_to_unzip = 'c:' . DS . 'temp1';
$src_zip_file = 'c:'. DS . 'temp' . DS . 'b2c' . DS . 'b2c.zip';
unzip_file($folder_to_unzip,$src_zip_file);
*/
$folder_to_zip = DS. 'home' . DS . 'bitnami' . DS . 'temp' . DS . 'b2c';
$zip_file = DS. 'home' . DS . 'bitnami' . DS . 'temp' . DS . 'b2c'. DS . 'b2c.zip';
create_zip($folder_to_zip, $zip_file);
$folder_to_unzip = DS. 'home' . DS . 'bitnami' . DS . 'temp1' . DS . 'b2c';
$src_zip_file = DS. 'home' . DS . 'bitnami' . DS . 'temp' . DS . 'b2c'. DS . 'b2c.zip';
unzip_file($folder_to_unzip,$src_zip_file);function create_zip($folder_to_zip, $zip_file) {
$rootPath = realpath($folder_to_zip);
$zip = new ZipArchive();
$zip->open($zip_file, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator /** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($files as $name => $file)
{
// Skip directories (they would be added automatically)
if (!$file->isDir())
{
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
}
function unzip_file($folder_to_unzip,$src_zip_file) {
$zip = new ZipArchive;
$res = $zip->open($src_zip_file);
if ($res === TRUE) {
$zip->extractTo($folder_to_unzip);
$zip->close();
return TRUE ;
} else {
return FALSE ;
}
}
Задача ещё не решена.
Других решений пока нет …