@rudants
Front-end разработчик

Как создать .zip архив средствами php?

Не получается создать архив, т.е. создан вручную в корневой папке каталог "zip", права на который с флагами 0777.
Код скрипта прикрепляю ниже.
Подскажите, пожалуйста, в чем ошибка и как ее исправить, если это возможно.

<form action="" method="POST">
  Путь к папке\директории, которые нужны заархивировать:
  <input name="path" type="text" />
  <input type="submit" value="Zip" />
</form>


<?php

ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);

$dirPath = $_POST["path"];
$dirOutputPath = "/zip/";
$site = $_SERVER["HTTP_HOST"];


if(isset($dirPath)){
    //Создаем новый класс
    $zip = new ZipArchive();
    //Указывает текущую дату
    $currentDate = Date("d_M_Y");
    //Указывем имя для нового архива
    $zipArchiveFilename = $dirOutputPath . "Backup_" . $currentDate . ".zip";
    echo "Архив сохранится в директорию: " . $zipArchiveFilename . "<br />";
    
    //Если открытый архив не создан, то создать его
    if ($zip->open($zipArchiveFilename, ZIPARCHIVE::CREATE) === TRUE) {
        
        //Заходим в директорию, добавляем файлы в архив, после чего закрываем архив.
        $pathToArchive = opendir($dirPath);
        while( $currentFile = readdir($pathToArchive) ) {
            echo "Добавляет файл " . $currentFile . " в архив " . $zipArchiveFilename . " размером " . filesize( $dirPath . "/" .$currentFile ) . "<br />";
            $zip->addFile($site . "/" . $dirPath . "/"  . $currentFile, $currentFile);
        }

        $zip->close();

        //Если архив создан - выводим сообщение
        if( is_file($zipArchiveFilename) ){
            echo "Архив с именем " . $zipArciveFilename . " успешно создан!";
        }
        
        
        //fwrite(STDOUT, "Архив успешно создан!\n");
        exit();
    } else{
        die("Ошибка при создании архива");
    }
}

ini_set('display_startup_errors',0);
ini_set('display_errors',0);
?>
  • Вопрос задан
  • 564 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
выставь репорт ошибок и посмотри
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы