# Ordner und Unterordner in ZIP packen



## NightWatcher (6. August 2004)

Hallo,

ich habe nen Problem.

Und zwar möchte ich nen Ordner "data/downloads/artists" inkl deren Unterordner in ein ZIP File packen.

Leider habe ich per Suche nicht gefunden 

Vielleicht könnt ihr mir ja weiter helfen, danke.


----------



## NightWatcher (6. August 2004)

Kann mir denn keiner weiter helfen


----------



## Sven Petruschke (6. August 2004)

Pushen nach 2h - muss das sein?

Es gibt die PHP-Anlaufstelle php.net, worauf man die Funktionsreferenz schlechthin findet. Wenn man also "nur" die passenden Funktionen zu einem Problem sucht, dann sollte man sich zuerst dort umschauen. Die Seite bietet ein Inhaltsverzeichnis nach verschiedenen Rubriken. In Deinem Fall wärst Du auf die ZIP-Funktionen und die ZLIB-Komprimierungsfunktionen gestoßen, wobei für die Komprimierung auf dem Server nur ZLIB in Frage kommt.

--> http://de.php.net/manual/de/ref.zlib.php

snuu


----------



## ludz (6. August 2004)

Vielleicht helfen dir die Kompressionsfunktionen der Zlib weiter: 
http://www.php.net/zlib

EDIT: Und schon wieder war der snuu Erster... ;-)


----------



## NightWatcher (6. August 2004)

Danke, aber da bin ich auch schon vorher drauf gekommen 

Nur leider bekomme ich es nicht hin, die Ordner inkl. Unterordner auszulesen und in nen Archiv zu packen


----------



## ludz (6. August 2004)

Also Funktionen zum Auslesen von Ordnern und Unterordnern findest du hier im Forum doch wohl zuhauf (Suche verwenden!).

Wenn du dir die Seite zur ZLib auf php.net genauer anschaust, dann findest du dort bei den Userkommentaren einige brauchbare Funktionen für das Komprimieren udn Entpacken von Archiven (siehe beispielsweise den Kommentar von "xorinox at tiscali dot ch" vom 4. Juni 2004).


----------



## NightWatcher (6. August 2004)

Hi,

also ich habe es nun folgendermaßen geschrieben:


```
$Verzeichnis = opendir("data/downloads/artists/");
$Eintrag = readdir($Verzeichnis);
$zp = gzopen('data/downloads/artist.gz', "w9");
while ($Eintrag) {
      $fp = fopen($Eintrag, "r");
      $data = fread ($fp, filesize($Eintrag));
      fclose($fp);
      gzwrite($zp, $data);
      $Eintrag = readdir($Verzeichnis);
}
closedir($Verzeichnis);
```

Nun bekomme ich folgende Fehlermeldung:


```
Warning: fopen(artist.ini): failed to open stream: No such file or directory in /home/web27/public_html/ces/data/content/member/index.php on line 221

Warning: filesize(): Stat failed for artist.ini (errno=2 - No such file or directory) in /home/web27/public_html/ces/data/content/member/index.php on line 222

Warning: fread(): supplied argument is not a valid stream resource in /home/web27/public_html/ces/data/content/member/index.php on line 222

Warning: fclose(): supplied argument is not a valid stream resource in /home/web27/public_html/ces/data/content/member/index.php on line 223
artist
Warning: fopen(artist): failed to open stream: No such file or directory in /home/web27/public_html/ces/data/content/member/index.php on line 221

Warning: filesize(): Stat failed for artist (errno=2 - No such file or directory) in /home/web27/public_html/ces/data/content/member/index.php on line 222

Warning: fread(): supplied argument is not a valid stream resource in /home/web27/public_html/ces/data/content/member/index.php on line 222

Warning: fclose(): supplied argument is not a valid stream resource in /home/web27/public_html/ces/data/content/member/index.php on line 223
```

Und das, obwohl alle Ordner und Dateien 100pro 777er CHMOD Rechte haben


----------



## ludz (7. August 2004)

Das hat mit dem CHMOD erstmal gar nichts zu tun.
Ich glaube eher, dass du einen Pfad vergisst.

```
//falsch:
$fp = fopen($Eintrag, "r");
//richtig:
$fp = fopen('data/downloads/artists/'.$Eintrag, "r");
```


----------



## NightWatcher (7. August 2004)

Oh gott, danke, das hätte ich im leben mal wieder nicht gesehen.

Jetzt  es 

Aber ein problem besteht noch 
Mit dem Code Schnippsel kopiert er nicht die Dateien in ein Archiv, sondern schreibt den inhalt der Daten einfach in das Archiv.

Was mache ich da noch falsch?


----------

