Zip Datei per FTP entpacken

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));
?> 

Kommentare:

Kommentare zum Beitrag lesen »
Schreibe selbst einen Kommentar »


Weitere Beiträge in dieser Kategorie:

Wer Slideshare nutzt muss jetzt sofort handeln!

Wer Slideshare auf einer deutschen Seite eingebettet hat, muss jetzt dringend handeln! Sonst besteht eine hohe Abmahnungsgefahr! Es hat sich nämlich herausgestellt, dass eine Einbindung von Slideshare-Präsentationen nach deutschem Recht datenschutzwidrig ist. Die Embedds enthalten Tracking-Codes, die Drittanbietern IP-Adresse der … Weiterlesen →

3 Kommentare » Schreibe einen Kommentar

  1. Hallo Viktor,

    genau dafür habe ich mal ein kleines Skript geschrieben, mit dem man komfortabel und schnell beliebige zip-Archive entpacken kann.

    Das Skript gibt es hier zum Runterladen: http://joomla-extensions.kubik-rubik.de/de/downloads/php-scripts-php-skripte/unzip-script-for-zip-archives

    Wie man schnell Joomla! installiert, habe ich in diesem Artikel erklärt: http://www.joomla-downloads.de/blick-ueber-den-tellerrand/1957-joomla-schnell-installieren-und-aktualisieren-unzip-skript.html

    Viel Spaß!

    Gruß

  2. Nunja viele Hoster sperren den Zugriff auf die exec(), system() etc. Funktionen denn damit besitzt man theoretisch die gleichen Möglichkeiten wie bei einem normalen SSH Zugriff.
    Deshalb wird der oben genannte Code bei vielen nicht funktionieren.

    Wahrscheinlicher ist, dass auf dem Server die PHP ZIP Extension installiert ist und man dann mit der ZIPArchive Klasse oder zip_open und zip_read das Archiv entpacken lässt.

    Ein sehr einfaches Beispiel für ZipArchive: http://www.bjw.co.nz/developer/php/62-php-unzip-an-uploaded-file-using-php

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.


Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>