Start · Sprachen · PHP · Referenz · Zip context options

Zip context options

Funktion

Kontextoptionen für ZIP-Stream-Kontexte, die beim Öffnen von ZIP-Dateien über <code>stream_context_create()</code> verwendet werden können.

seit PHP 7.2.0 Kategorie: misc

Signatur

array $context [Zip-Kontextoptionen]

Beschreibung

ZIP-Kontextoptionen ermöglichen es, das Verhalten von ZIP-Streams beim Öffnen von Dateien innerhalb eines ZIP-Archivs via zip://-Protokoll zu steuern. Sie werden als assoziatives Array unter dem Schlüssel 'zip' an stream_context_create() übergeben.

Mithilfe dieser Optionen kann beispielsweise ein Passwort für verschlüsselte ZIP-Archive angegeben werden, sodass passwortgeschützte Einträge direkt über PHP-Streamfunktionen wie file_get_contents() oder fopen() gelesen werden können.

Die Optionen gelten ausschließlich für das zip://-Stream-Wrapper-Protokoll. Für umfangreichere Operationen auf ZIP-Archiven (z. B. Erstellen, Bearbeiten, Extrahieren mehrerer Dateien) empfiehlt sich die Klasse ZipArchive.

  • password (string): Passwort für verschlüsselte Einträge im ZIP-Archiv.

Parameter

Name Typ Default Beschreibung
$password string Das Passwort, das für den Zugriff auf verschlüsselte Einträge in einem ZIP-Archiv verwendet wird. Wird als Teil des 'zip'-Schlüssels im Kontextarray übergeben.

Rückgabewert

Typ

Beispiele

Unverschlüsselte Datei aus ZIP-Archiv lesen

<?php
// Eine Datei aus einem ZIP-Archiv über den zip://-Wrapper lesen
$context = stream_context_create([
    'zip' => [
        // Keine besonderen Optionen nötig bei unverschlüsselten Archiven
    ]
]);

$content = file_get_contents('zip:///pfad/zum/archiv.zip#datei.txt', false, $context);
echo $content;
Inhalt der datei.txt aus dem ZIP-Archiv

Passwortgeschützte Datei aus ZIP-Archiv lesen

<?php
// Einen passwortgeschützten Eintrag aus einem ZIP-Archiv lesen
$context = stream_context_create([
    'zip' => [
        'password' => 'geheimesPasswort'
    ]
]);

$handle = fopen('zip:///pfad/zum/verschluesselt.zip#geheime-datei.txt', 'r', false, $context);
if ($handle !== false) {
    while (!feof($handle)) {
        echo fread($handle, 1024);
    }
    fclose($handle);
} else {
    echo 'Fehler beim Öffnen der Datei.';
}
Inhalt der entschlüsselten geheime-datei.txt

// Wichtig · Fallstricke

Sicherheitshinweis: Passwörter, die als Kontextoption übergeben werden, liegen als Klartext im PHP-Skript vor. Vermeiden Sie es, Passwörter hartkodiert im Quellcode zu speichern. Lesen Sie Passwörter stattdessen aus sicheren Umgebungsvariablen oder Konfigurationsdateien, die außerhalb des Web-Roots liegen.

Die Unterstützung für das password-Kontextattribut hängt von der zugrunde liegenden libzip-Version ab. Stellen Sie sicher, dass eine aktuelle Version der libzip-Bibliothek installiert ist, um verschlüsselte ZIP-Einträge korrekt verarbeiten zu können.

Der ZIP-Stream-Wrapper unterstützt nur lesenden Zugriff ('r'-Modus). Schreibende Operationen auf ZIP-Archive über den Stream-Wrapper sind nicht möglich — hierfür muss die Klasse ZipArchive verwendet werden.