За последние 24 часа нас посетили 17748 программистов и 1674 робота. Сейчас ищет 971 программист ...

Создание zip-архива

Тема в разделе "Прочие вопросы по PHP", создана пользователем Biopengwin, 9 ноя 2015.

  1. Biopengwin

    Biopengwin Новичок

    С нами с:
    9 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Не могу зазиповать файл, прошу помощи.(( Делаю это под Denwer на Windows 7. В функции ничего странного нет:

    Код (PHP):
    1. function zip_file($filename, $zip_name) {
    2.     if (!extension_loaded('zip')) {
    3.         return "Дополнение zip не подключено.";
    4.     }
    5.     
    6.     $zip = new ZipArchive;
    7.     
    8.     @unlink($zip_name); // для теста
    9.     if ($zip->open($zip_name, ZIPARCHIVE::CREATE) !== true) {
    10.         return "Не могу создать архив.";
    11.     }
    12.     
    13.     if ($zip->addFile($filename) !== true) {
    14.         return "Не могу добавить файл в архив.";
    15.     }
    16.     
    17.     $zip->close();
    18. }
    Вызываю функцию так:

    Код (PHP):
    1. $error = zip_file("Z:/home/myproject/www/123.txt", "Z:/home/myproject/www/123.zip");
    2. echo $error;
    Архив создаётся каким-то кривым, весит 1кб. Если открыть его в WinRar, то я вижу как будто внутри лежит весь мой диск Z: (виртуальный диск Денвера). Это не нормально, потому что если создать пустой архив ВинРаром, то он при открытии и выглядит пустым.

    [​IMG]

    Если я открываю этот архив проводником, то внутри как будто пусто. В общем, метод addFile делает что-то не то, не могу понять почему.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Denwer замени на Open-Server.ru чтобы использовать более свежие версии php, mysql...
    https://secure.php.net/manual/ru/zip.examples.php
    Почему ООП подход и процедурный одновременно?
    Код (PHP):
    1. new ZipArchive
    2. zip_file()
    3.  
     
  3. Biopengwin

    Biopengwin Новичок

    С нами с:
    9 ноя 2015
    Сообщения:
    15
    Симпатии:
    0
    Не процедурный. Я упростил код для примера. Более свежие версии мне не нужны, я поставил те что на работе на хостинге. И там тоже Windows 7, если что.

    Короче, что-то не так с слешами. Если файл положить в корень сайта и первым параметром передать "123.txt", то зипуется нормально. А если полный путь или релативный - получается кривой архив.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно посмотреть реальный код?

    Код (PHP):
    1. $zip->addFile('/path/to/index.txt', 'newname.txt');
    Второй аргумент newname.txt без полного пути файла, указывай второй аргумент как относительный путь к файлу

    https://secure.php.net/manual/ru/ziparchive.addfile.php
    http://phpfaq.ru/newbie/paths