Start · Sprachen · PHP · Referenz · zip_entry_close

zip_entry_close

Funktion

Schließt einen zuvor geöffneten ZIP-Verzeichniseintrag und gibt die damit verbundenen Ressourcen frei.

seit PHP 4.1.0 Kategorie: io

Signatur

zip_entry_close(resource $zip_entry): bool

Beschreibung

zip_entry_close() schließt einen einzelnen Verzeichniseintrag innerhalb eines ZIP-Archivs, der zuvor mit zip_entry_open() geöffnet wurde. Nach dem Schließen können keine weiteren Lesevorgänge auf diesem Eintrag durchgeführt werden.

Die Funktion gehört zur älteren, prozeduralen ZIP-Erweiterung von PHP. Sie wird typischerweise verwendet, wenn man mit zip_read() durch die Einträge eines ZIP-Archivs iteriert, jeden Eintrag öffnet, seinen Inhalt mit zip_entry_read() ausliest und anschließend wieder schließt.

Für neue Projekte empfiehlt sich die Verwendung der objektorientierten ZipArchive-Klasse, da die prozedurale ZIP-API als veraltet gilt und in PHP 8.0 offiziell als deprecated markiert wurde.

Parameter

Name Typ Default Beschreibung
$zip_entry Pflicht resource Eine gültige ZIP-Eintragsressource, die zuvor mit zip_entry_open() geöffnet wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn die übergebene Ressource ungültig ist).

Beispiele

Einträge eines ZIP-Archivs auslesen und schließen

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

if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        $name = zip_entry_name($entry);
        echo 'Eintrag: ' . $name . PHP_EOL;

        if (zip_entry_open($zip, $entry, 'r')) {
            $size = zip_entry_filesize($entry);
            $inhalt = zip_entry_read($entry, $size);
            echo 'Größe: ' . strlen($inhalt) . ' Bytes' . PHP_EOL;

            // Eintrag nach dem Lesen schließen
            zip_entry_close($entry);
        }
    }
    zip_close($zip);
}
Eintrag: readme.txt Größe: 128 Bytes Eintrag: bild.png Größe: 4096 Bytes

Rückgabewert prüfen

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

if (is_resource($zip)) {
    $entry = zip_read($zip);

    if ($entry && zip_entry_open($zip, $entry)) {
        // Inhalt verarbeiten ...
        $ergebnis = zip_entry_close($entry);

        if ($ergebnis) {
            echo 'Eintrag erfolgreich geschlossen.';
        } else {
            echo 'Fehler beim Schließen des Eintrags.';
        }
    }
    zip_close($zip);
}
Eintrag erfolgreich geschlossen.

// Wichtig · Fallstricke

Deprecated: Die prozedurale ZIP-API (zip_open, zip_read, zip_entry_open, zip_entry_close usw.) wurde in PHP 8.0 als veraltet (deprecated) markiert und erzeugt entsprechende Warnungen. Für neue Projekte sollte ausschließlich die Klasse ZipArchive verwendet werden.

Es ist wichtig, jeden mit zip_entry_open() geöffneten Eintrag auch wieder mit zip_entry_close() zu schließen, bevor das gesamte Archiv mit zip_close() geschlossen wird, um Ressourcenlecks zu vermeiden.