Vorwort

Oft ist es sehr praktisch, wenn man ein .zip Archiv direkt auf dem Webspace / Host / Server entpacken kann ohne dies umständlich lokal auf dem PC / Laptop machen zu müssen.

Natürlich ist auch das hochladen einer .zip Datei mit einer Größe von 10MB viel schneller als das hochladen aller einzelnen Dateien der .zip Datei.

Nicht nur weil die Dateien entpackt in Summe sicher größer sind als gepackt, sondern auch, weil das FTP Programm statt einer Datei – als Beispiel – 5.000 einzelne Dateien hochladen muss.

Der Code

Es gibt in PHP bereits eine Klasse für das entpacken von .zip Dateien.

Diese Klasse nennt sich ZipArchive.

Die Klasse verfügt über sehr viele Optionen – ich gehe hier nur auf das entpacken einer .zip Datei ein.

Hier also der PHP Code (unzip.php):

$zip = new ZipArchive;
$res = $zip->open('meinezipdatei.zip');
if ($res === TRUE) {
  $zip->extractTo('/ordner
  /unterordner/');
  $zip->close();
  echo 'Das .zip Archiv wurde erfolgreich entpackt!';
} else {
  echo 'Beim entpacken des .zip Archivs ist ein Fehler aufgetreten!';
} 

Gehen wir auf die 2 wichtigsten Zeilen Code kurz ein.

$res = $zip->open('meinezipdatei.zip'); 

Hier definieren wir welche .zip Datei wir entpacken wollen.
Hier als Beispiel meinezipdatei.zip.
Diesen Wert müssen Sie natürlich an den Namen Ihres Archives anpassen.

In dieser Zeile wird definiert, wohin die Dateien aus dem .zip Archiv entpackt werden sollen.

Wichtig: Achten Sie darauf, dass das Verzeichnis wirklich existiert denn ansonsten schlägt das entpacken fehl.

  $zip->extractTo('/ordner
  /unterordner/'); 

In diesem Beispiel wollen wir unsere Dateien aus de .zip Archiv in den Ordner /ordner/unterordner/ entpacken.
Passen Sie den Pfad an Ihren Pfad an!

Wollen Sie die Dateien aus dem .zip Archiv in das selbe Verzeichnis entpacken, indem die unzip.php Datei liegt?

Kein Problem, das sieht dann so aus:

  $zip->extractTo('.'); 
Mit PHP eine .zip Datei entpacken

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.