zip oder rar entpacken

Davidoof

Grünschnabel
Hi

ich wollt mal fragen, ob man mit php auch zip oder rar datein entpacken lassen kann?
oder hat jemand ne Idee wie ich hochgeladene zipdatein enpacken lassen kann

mfg david
 
Das Pear-Paket ist soweit ich weiß noch nicht das berauschendste. Eine gute Möglichkeit zip und rar zu entpacken ist die [phpf]exec[/phpf]-Funktion von PHP. Dann muss allerdings die unzip und unrar binary vorhanden und durch PHP erreichbar sein.
 
so hier mit kann ich ja schon mal die zip auslesen, und wenn es sich um eine txt hadelt auch auslesen. aber wie kann ich die datein die in der zip sind enpacken

<?php

$zip = zip_open("E:/~~~~~/test.zip");

if ($zip) {
$i = 1;
while ($zip_entry = zip_read($zip)) {
echo $i." Name: <b> " . zip_entry_name($zip_entry) . "</b>\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";

if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:\n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$buf\n";

zip_entry_close($zip_entry);
}
echo "\n<br>";
$i++;
}
zip_close($zip);
}
?>
 
@forsterm:
Leider ist die Verbreitung desselbigen absolut mies. Ich kenne wenige Hoster die das überhaupt anbieten - gerade im Sharedhosting bereich ist es unerwünscht, wenn ein User mit Kompressionsverfahren die Maschine lahmlegen kann ;)
Die ZIP Unterstützung ist standardmäßig nicht aktiviert. Um die ZIP Funktionen nutzen zu können, muss PHP mit der option --with-zip kompiliert werden. Das ZIP Modul benötigt ZZIPlib version >= 0.10.6.
 
Dazu sei noch angemerkt, dass die ZZipLib mit PHP5 nicht mehr unterstuetzt wird und die Option --with-zip dementsprechend nicht mehr existiert.
 
Dann möchte ich auch noch eine Anmerkung machen:
ZIP-Entpacken über [phpf]exec[/phpf] halte ich für sehr gefährlich. Erstens ist bei jedem parametrisierten Aufruf von [phpf]exec[/phpf] ein Angriff möglich, der beliebige Dateien auf dem Server ausführen kann. Zweitens solltest Du unbedingt die Möglichkeit behalten, das entpacken mit PHP selbst zu steuern und zum Beispiel vorher die Dateigröße im entpackten Zustand prüfen. Eine 5 GB große Datei mit ein und demselben Zeichen ist im ZIP-Archiv nur wenige kB groß und kann somit beim entpacken Deinen Server lahmlegen.

Davidoof hat gesagt.:
aber wie kann ich die datein die in der zip sind enpacken
Das, was in $buf steht musst Du mit Hilfe der Funktionen des Dateisystems ([phpf]fopen[/phpf], [phpf]fputs[/phpf], [phpf]fwrite[/phpf] und [phpf]fclose[/phpf]) in eine Datei schrieben, statt es mit [phpf]echo[/phpf]auszugeben.

Gruß hpvw
 
hpvw hat gesagt.:
Eine 5 GB große Datei mit ein und demselben Zeichen ist im ZIP-Archiv nur wenige kB groß und kann somit beim entpacken Deinen Server lahmlegen.
Ein Angriff ist fast immer und überall denkbar, ich bin auch froh über den Hinweis darauf. Allerdings halte ich den Fall mit den 5 GB doch weit hergeholt. Man hat unter Unix/Linux (und auch unter Windoze, etc.) die Möglichkeit herauszufinden wie groß die Datei(en) im Archiv tatsächlich sind und sie ab einer bestimmten Größe nicht mehr zu entpacken. Eine Möglichkeit ist mit der -l Option in unzip gegeben.

Ansonsten würde ich aber zusätzlich ebenso empfehlen solche Scripts nur in speziell gesicherten Administrationsoberflächen zu verwenden, wenn man sie schon über eine Weboberfläche einsetzen will.
 
also mit exec("unzip Pfad/dir/dat.zip")

Ich möchte das ja nur im Adminbereich verwenden um mal neue Pics hochzuladen, wenn ich mal im urlaub und oder sonst wo bin und nich grad mit dem FPT rankomm.

ok thx noch mal an alle

mfg david
 
Zurück