ZIP Ordner wird nicht richtig erstellt

tklustig

Erfahrenes Mitglied
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?

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:

Neue Beiträge

Zurück