Zip Datei per FTP entpacken

Viktor Dite, Autor des Beitrags

Von - Publiziert in Webdevelopment Blog über MySQL & PHP
Dipl. Informatiker und Tech-Blogger seit 2006.


Eine Zip Datei lässt sich mit Hilfe von PHP auf einem nur per FTP erreichbaren Server entpacken. Du brauchst also keinen SSH Zugriff zum Server um darauf eine Zip Datei entpacken zu können!

Kennst Du das? Du hast Probleme mit den Dateirechten nachdem Du eine Zip Datei lokal auf dem Rechner entpackt hast und die darin enthaltenen Dateien per FTP hochgeladen hast? Du musst also die Zip Datei unbedingt auf dem Server entpacken, hast aber keinen SSH Zugriff darauf?

MIt einem kleinen Trick und mit Hilfe von PHP kannst Du die Zip Datei ganz einfach per FTP hochladen und mit PHP entpacken.

Zip Datei auf dem Server per FTP entpacken

  1. Lade die dateiname.zip Datei per FTP auf den Server in ein Verzeichnis Deiner Wahl
  2. Erzeuge im selben Verzeichnis eine neue PHP Datei mit dem folgenden Inhalt:
    <?php
         $zip = new ZipArchive;
         $res = $zip->open('dateiname.zip');
         if ($res === TRUE) {
             $zip->extractTo('./');
             $zip->close();
             echo 'ok';
         } else {
             $file = "dateiname.zip";
             exec("unzip $file 2>&1", $out);
             print(implode("<br>", $out));
         }
    ?> 
    
  3. Speichere die PHP Datei.
  4. Führe nun die Datei via Webbrowser aus. Du bekommst die sonst übliche Anzeige der entpackten Dateien nun im Browser angezeigt.
  5. Fertig

Dank für die Lösung via Joomla Portal
und für die Erweiterung aus bjw via Janek

Edit:

Ich habe jetzt mal die Lösung von Janek (siehe Kommentare) mit in das Skript aufgenommen… Jetzt sind beide Möglichkeiten vorhanden und so sollte eine von beiden Versionen auf jeden Fall funktionieren! Vielen Dank dafür an Janek!

tar.gz per FTP entpacken

Das ganze lässt sich natürlich für beliebige per Shell ausführbaren Befehle verwenden! Du kannst also auch bspw. tar.gz per FTP entpacken:

<?php
    $file = "dateiname.tar.gz";
    exec("tar xvfz $file 2>&1", $out);
    print(implode("<br>", $out));
?> 

Letzte Änderung: