Архивируем и распаковываем zip-архивы

Архивируем и распаковываем zip-архивы

Архивируем и распаковываем zip-архивы

Порой бывает необходимо заархивировать или разархивировать файлы или папки с файлами на сайте. Иногда у хостеров в панели управления уже есть встроенные утилиты для архивации. Но что делать, если таковых нет?

Тогда нам в помощь идет библиотека PclZip.

Прежде, чем работать с этой библиотекой, убедитесь, что у вас на сервере включен php-модуль zip.

После этого копируем на сервер два файлика из архива add_zip.zip, который прикреплен в конце статьи. Копируем в ту папку, из которой нужно начать архиврование. То есть, если вам нужно заархивировать только содержимое папки "/images/", о копируем файлы туда. Если нужно заархивировать весь сайт, то копируем файлы в корень. Архивация происходит рекурсивно - все подпапки с файлами будут добавлены в архив.

Вот код из файла add_to_zip.php:

<?
define('ROOT', rtrim(str_replace('\\', '/', dirname(__FILE__)), '/'). '/');

$name_arch = ROOT. 'archive.zip';
$files_dir = rtrim(ROOT, '/');
$files_to_arch = array();

require_once(ROOT. 'pclzip.lib.php');

for($d = @opendir($files_dir); $file = @readdir($d);)
{      
    if($file!='.' && $file!='..')
    {
        $files_to_arch[]= $file;
    }
}

chdir($files_dir);

$archive = new PclZip($name_arch);
$v_list = $archive->create(implode(',', $files_to_arch));

if($v_list == 0)
{
   die("Error : ".$archive->errorInfo(true));
}
else
{
   echo 'OK';
}
?>

Теперь немного пояснений. В переменной $name_arch вы указываете название архива, который будет создан в конце. Если архивация пройдет успешно, вы увидите на экране надпись "ОК", в противном же случае вам будут выведены ошибки.

Тут стоит отметить такую особенность: если у вас очень много файлов на сервере, а время выполнения скриптов ограничено (обычно в настройках у хостеров стоит 30-60 сек.), то вы получите битый архив на выходе и пустой экран без надписей по истечению времени.

Распаковка архива

Тут дела обстоят гораздо проще. За нас с вами уже всё придумали умные люди. А именно команда известного сайта TemplateMonster. С каждым их шаблоном в архиве идет файлик для распаковки. Я лишь русифицировал его для большего удобства. Вам нужно будет закачать его на сервер, запустить и выбрать файл для распаковки. Файлик лежит в прикрепленнов снизу статьи архиве TM_unzipper.zip.

Как видите, все очень просто.


add_zip.zip (скачать)

TM_unzipper.zip (скачать)

  • Почему при создании архива кроме указанного файла в него копируется все папки от корня до файла?