Signatur
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
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;
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.';
}
// 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.