Elkos: Der ZIP-komprimierte Ordner ist ungültig

Beitrag lesen

Hallo,

ich erstelle ein Zip-Archiv mit der shell von 7-zip: shell_exec("7z.exe a -mx=5 -tzip $archivname $arc_files"), versuchsweise auch mit der zip.lib.php. Das Archiv wird korrekt in einem temporären Verzeichnis erstellt und mittels fpassthru() mit den Headern:

header("Content-type: application/octet-stream');
header('content-type: application/x-zip");
header('Content-Disposition: attachment; filename="archiv.zip"');

an den Browser (IE6 bzw. Firefox 3.05) gesendt. Das Archiv wird mit den Optionen "öffnen" und "speichern" korrekt angezeigt. Klicke ich auf öffnen bekomme ich die Fehlermeldung "Der ZIP-komprimierte Ordner ist ungültig oder beschädigt". Speichere ich die Datei läßt sie sich ebenso wenig direkt von Windows öffnen.

Mit dem lokal installierten 7-Zip kann ich das Archiv öffnen und sehe in den Dateieigenschaften "7-Zip.GZip", obwohl ich, s.o. in den Parameter der shell explizit "zip" und nicht "Gzip" als Komprimierungstyp angegeben habe. Genau das gleiche passiert wenn ich z.B. die Klasse "zip.lib.php" an Stelle von 7-Zip benutze. Auch die damit erzeugten Dateien tragen in den Eigenschaften den Zusatz ".GZip".

Testweise habe ich den ZIP File durch das Script erstellen lassen, die Ausgabe an den Browser aber unterdrückt. Die Datei liegt also noch im temporären Verzeichnis des Webservers. Hier kann ich die Datei mit den Windows Bordmitteln problemlos öffnen. Erst nachdem ich ich sie mittels fpassthru() oder readfile() mit den o.g. Headern an den Browser sende geht das nicht mehr.

Wo kann hier die Ursache liegen, was ist die Lösung, ich bin ratlos.

Gruß
Elkos