Открывает ZIP-архив

# ZipArchive::open

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::open — Открывает ZIP-архив

### Описание

public function ZipArchive::open(string `$filename`, int `$flags` = 0): bool|int

Метод открывает новый или существующий ZIP-архив для чтения, записи или изменения.

Начиная с libzip 1.6.0 метод оценивает пустой файл как недопустимый архив.

### Список параметров

`filename`
  Имя ZIP-архива для открытия.
`flags`

  Используемый режим открытия файлов.

  - `ZipArchive::OVERWRITE`
  - `ZipArchive::CREATE`
  - `ZipArchive::RDONLY`
  - `ZipArchive::EXCL`
  - `ZipArchive::CHECKCONS`

### Возвращаемые значения

Метод возвращает `true` в случае успешного выполнения, `false` или код ошибки из следующих констант:

`ZipArchive::ER_EXISTS`
  Файл уже существует.
`ZipArchive::ER_INCONS`
  Несовместимый ZIP-архив.
`ZipArchive::ER_INVAL`
  Недопустимый аргумент.
`ZipArchive::ER_MEMORY`
  Ошибка динамического выделения памяти.
`ZipArchive::ER_NOENT`
  Нет такого файла.
`ZipArchive::ER_NOZIP`
  Не является ZIP-архивом.
`ZipArchive::ER_OPEN`
  Невозможно открыть файл.
`ZipArchive::ER_READ`
  Ошибка чтения.
`ZipArchive::ER_SEEK`
  Ошибка поиска.

### Примеры

Пример #1 Открыть и извлечь

    <?php

    $zip = new ZipArchive();
    $res = $zip->open('test.zip');

    if ($res === true) {
        echo 'Готово';
        $zip->extractTo('test');
        $zip->close();
    } else {
        echo 'Ошибка, код:' . $res;
    }

    ?>

Пример #2 Создать архив

    <?php

    $zip = new ZipArchive();
    $res = $zip->open('test.zip', ZipArchive::CREATE);

    if ($res === true) {
        $zip->addFromString('test.txt', 'содержимое файла');
        $zip->addFile('data.txt', 'entryname.txt');
        $zip->close();
        echo 'Готово';
    } else {
        echo 'Ошибка';
    }

    ?>

Пример #3 Создать временный архив

    <?php

    $name = tempnam(sys_get_temp_dir(), "FOO");
    $zip = new ZipArchive();
    $res = $zip->open($name, ZipArchive::OVERWRITE); /* Усечение, поскольку пустой файл недопустим */

    if ($res === true) {
        $zip->addFile('data.txt', 'entryname.txt');
        $zip->close();
        echo 'Готово';
    } else {
        echo 'Ошибка';
    }
    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open