Скачать директорию с сервера как архив, PHP

На сервере есть директории к которым нет доступа из вне, но есть необходимость их скачивания с сайта. Нашел одну библиотеку для создания архива из "папки" со всеми вложенными в неё директориями и файлами, но проблема в том, что класс, который я нашел не работает корректно.

Какие есть способы, либо библиотеки для генерации архивов "на лету" с возможностью их скачивания?


Ответы (1 шт):

Автор решения: YaMus
<?php
class FlxZipArchive extends ZipArchive 
{
 public function addDir($location, $name) 
 {
       $this->addEmptyDir($name);
       $this->addDirDo($location, $name);
 } 
 private function addDirDo($location, $name) 
 {
    $name .= '/';
    $location .= '/';
    $dir = opendir ($location);
    while ($file = readdir($dir))
    {
        if ($file == '.' || $file == '..') continue;
        $do = (filetype( $location . $file) == 'dir') ? 'addDir' : 'addFile';
        $this->$do($location . $file, $name . $file);
    }
 } 
}
?>

<?php
$the_folder = '/path/to/folder/to/be/zipped';
$zip_file_name = '/path/to/zip/archive.zip';
$za = new FlxZipArchive;
$res = $za->open($zip_file_name, ZipArchive::CREATE);
if($res === TRUE) 
{
    $za->addDir($the_folder, basename($the_folder));
    $za->close();
}
else{
echo 'Could not create a zip archive';
}

Источник: https://stackoverflow.com/questions/4914750/how-to-zip-a-whole-folder-using-php ?>

→ Ссылка