Um Verzeichnisse rekursiv zu einem Zip Archiv hinzuzufügen kann folgendes Script verwendet werden:
public function zipDir(&$zip, $dir, $base = “)
{
if (!file_exists($dir));
$arFiles = scandir($dir);
foreach ($arFiles as $file)
{
if (in_array($file, array(‚.‘, ‚..‘))) continue;
if (is_file($dir.’/‘.$file))
{
$zip->addFile($dir.’/‘.$file, $base.$file);
}
else if (is_dir($dir.’/‘.$file))
{
$zip->addEmptyDir($base.$file);
zipDir($zip, $dir.’/‘.$file, $base.$file.’/‘);
}
}
}
Der Aufruf kann dann wie folgt aussehen:
$tmpzip = tempnam("/tmp", "wpShopGermany");
$zip = new ZipArchive;
$res = $zip->open($tmpzip, ZipArchive::CREATE);
// Verzeichnisse
zipDir($zip, ‚/var/home/htdocs/wpShopGermany/wp-content/uploads/wpsg_produktbilder‘, ‚wpsg_produktbilder/‘);
$zip->close();
header("Cache-Control: private");
header(‚Content-Type: application/download; charset=utf-8‘);
header(‚Content-Disposition: filename=wpsg_upgrade.zip‘);
header("Pragma: public");
session_cache_limiter(’nocache‘);
die(file_get_contents($tmpzip));
Das Zip Archiv würde dabei direkt als Download an den Browser übergeben werden.