Start · Sprachen · PHP · Referenz · zip_close

zip_close

Funktion

Schließt ein zuvor mit <code>zip_open()</code> geöffnetes ZIP-Archiv und gibt alle zugehörigen Ressourcen frei.

seit PHP 4.1.0 Kategorie: io

Signatur

zip_close(resource $zip): void

Beschreibung

zip_close() schließt eine ZIP-Archiv-Ressource, die zuvor mit zip_open() geöffnet wurde. Die Funktion gibt alle internen Ressourcen und den Dateizeiger frei. Nach dem Aufruf ist die übergebene Ressource ungültig und darf nicht mehr verwendet werden.

Die Funktion gehört zur älteren, prozeduralen ZIP-Erweiterung von PHP. Für neue Projekte empfiehlt sich die objektorientierte ZipArchive-Klasse, die eine vollständigere und modernere Schnittstelle bietet. zip_close() ist dennoch in vielen bestehenden Codebasen anzutreffen und bleibt funktionsfähig.

Typischer Einsatz: Nachdem alle Einträge eines Archivs mit zip_read() und zip_entry_*()-Funktionen verarbeitet wurden, sollte zip_close() aufgerufen werden, um das Archiv ordnungsgemäß zu schließen und Ressourcenlecks zu vermeiden.

Parameter

Name Typ Default Beschreibung
$zip Pflicht resource Eine gültige ZIP-Ressource, die zuvor von zip_open() zurückgegeben wurde.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

ZIP-Archiv öffnen, Einträge auflisten und schließen

<?php
$zip = zip_open('/pfad/zum/archiv.zip');

if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        echo 'Eintrag: ' . zip_entry_name($entry) . PHP_EOL;
        echo 'Komprimierte Größe: ' . zip_entry_compressedsize($entry) . ' Bytes' . PHP_EOL;
    }
    zip_close($zip);
    echo 'Archiv erfolgreich geschlossen.' . PHP_EOL;
} else {
    echo 'Fehler beim Öffnen des Archivs. Fehlercode: ' . $zip . PHP_EOL;
}
?>
Eintrag: beispiel.txt Komprimierte Größe: 42 Bytes Archiv erfolgreich geschlossen.

Dateiinhalt aus ZIP-Archiv lesen und Archiv schließen

<?php
$zip = zip_open('/pfad/zum/archiv.zip');

if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        $name = zip_entry_name($entry);
        if (zip_entry_open($zip, $entry, 'r')) {
            $inhalt = zip_entry_read($entry, zip_entry_filesize($entry));
            echo '--- ' . $name . ' ---' . PHP_EOL;
            echo $inhalt . PHP_EOL;
            zip_entry_close($entry);
        }
    }
    zip_close($zip);
} else {
    echo 'ZIP-Archiv konnte nicht geöffnet werden.' . PHP_EOL;
}
?>
--- beispiel.txt --- Hello, World!

// Wichtig · Fallstricke

Veraltete API: Die prozedurale ZIP-Erweiterung (zip_open, zip_read, zip_close usw.) gilt als veraltet. Für neue Projekte sollte die objektorientierte ZipArchive-Klasse verwendet werden, die mit ZipArchive::close() geschlossen wird.

Ressourcenverwaltung: Das Vergessen von zip_close() kann zu Ressourcenlecks führen, insbesondere in lang laufenden Skripten oder bei der Verarbeitung vieler Archive in einer Schleife.

Fehlerbehandlung: zip_open() gibt im Fehlerfall einen Integer-Fehlercode (kein false) zurück. Vor dem Aufruf von zip_close() sollte daher mit is_resource() geprüft werden, ob eine gültige Ressource vorliegt.