В частности в архив добавляется дамп базы данных в кодировке utf-8 на выходе из архива ломается.
$archiveName = date('YmdHi') . '-' . APP::$conf['location'][1] . '.zip';
$zip = new ZipArchive;
$zip->open($archiveName, ZIPARCHIVE::CREATE);
// create recursive directory iterator
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(ROOT), RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($files as $name => $file) {
$filePath = $file->getRealPath();
$localPath = explode(ROOT, $filePath);
if ((strpos($filePath, ROOT . '/logs') !== false) || (strpos($filePath, ROOT . '/tmp') !== false)) {
continue;
} else {
if (is_file($filePath)) {
// echo mb_substr($localPath[1], 1)."<br>";
$zip->addFile(mb_substr($localPath[1],1));
}
}
}
$zip->close();
header('Content-Type: application/zip; charset=utf-8');
header('Content-Length: ' . filesize($archiveName));
header('Content-Disposition: attachment; filename="' . $archiveName.'"');
readfile($archiveName);
// unlink($archiveName);
rmdir($backupDir);
exit;