Hallo Leute,
folgendes Script zippt zwar alle Dateien rekursiv aus einem Verzeichnis, aber nicht so, wie sie tatsächlich auf dem Server liegen. Bei folgendem Verzeichnisabbild:
rootfolder -(SubFolder - file3 file4) file 1 file 2 holt er sich zwar alle 4 Dateien, ich möchte aber das er den rootFolder mitsamt des Subfolder zippt, so dass die Hierarchie 1:1 abgebildet wird. Wird sie aber nicht. Der Subfolder wurde zwar integriert, file 3 und file 4 befinden sich aber außerhalb des Subfolder. Ich bekomme es 1:1 einfach nicht gebacken. Weiß jemand Rat?
folgendes Script zippt zwar alle Dateien rekursiv aus einem Verzeichnis, aber nicht so, wie sie tatsächlich auf dem Server liegen. Bei folgendem Verzeichnisabbild:
rootfolder -(SubFolder - file3 file4) file 1 file 2 holt er sich zwar alle 4 Dateien, ich möchte aber das er den rootFolder mitsamt des Subfolder zippt, so dass die Hierarchie 1:1 abgebildet wird. Wird sie aber nicht. Der Subfolder wurde zwar integriert, file 3 und file 4 befinden sich aber außerhalb des Subfolder. Ich bekomme es 1:1 einfach nicht gebacken. Weiß jemand Rat?
PHP:
// Get real path for our folder
$rootPath = realpath($this->folder2BeZipped);
// Initialize archive object
$zip = new ZipArchive();
if (!$zip->open($zipDestination . $this->zipName, ZIPARCHIVE::CREATE)) {
return false;
}
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($files as $name => $file) {
// Skip directories (they should be added automatically, but they will not!)
if (!$file->isDir()) {
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Add current file to archive
$zip->addFile($filePath, $relativePath);
} else {
$zip->addEmptyDir(str_replace($rootPath.DIRECTORY_SEPARATOR, '', $file->getPath()));
}
}
// Zip archive will be created only after closing object
$zip->close();
Zuletzt bearbeitet von einem Moderator: