Hallo!
Mein Anliegen ist, dass ich gerne ein Verzeichnis einlesen möchte, die Struktur und den Inhalt in einer ZIP-Datei speichere und diese an den Client sende. Leider schaffe ich es nicht, eine einfache ZIP-Datei auch nur mithilfe von PHP zu erstellen.
Hier einmal der dazugehörige Codeausschnitt:
if (isset($_GET[$d_dir]) && is_dir($root.$_GET[$d_dir]))
{
$zip=new ZipArchive();
$zip->open('testfile.zip', ZipArchive::CREATE);
zipRecursion($zip, $root.$_GET[$d_dir], '');
//header('Content-Type: application/zip');
//header('Content-Disposition: attachment; filename="'.(substr($_GET[$d_dir], strrpos($_GET[$d_dir], '/'))).'.zip"');
$zip->close();
exit();
}
In der Funktion zipRecursion
wird der Inhalt der Verzeichnisstruktur eingelesen:
function zipRecursion($zip, $dir, $docroot)
{
$d_dir=$GLOBALS['d_dir'];
$root=$GLOBALS['root'];
$files=getEntries($root.$_GET[$d_dir]);
$len=count($files);
for ($i=0; $i<$len; ++$i)
{
if ($files[$i]=='.' || $files[$i]=='..') continue;
if (is_file($root.$files[$i])) $zip->addFile($root.$files[$i], $docroot.$files[$i]);
else if (is_dir($root.$files[$i]))
{
$zip->addEmptyDir($files[$i]);
zipRecursion($zip, $root.$files[$i].'/', $docroot.$files[$i].'/');
}
}
}
Selbst wenn diese Funktion nicht funktionieren sollte, müsste doch eigentlich wenigstens eine ZIP-Datei (testfile.zip) im gleichen Verzeichnis erzeugt werden, oder? Jedoch finde ich keine neue Datei!
Der benutzte Server Apache 2 und PHP hat die Version 5.3.3-7. Es wird keine Fehlermeldung angezeigt.
Hoffe, ihr könnt mir helfen!
Rachus