php8.5
Home/ Manual/ zip / ziparchive/ ZipArchive::open

ZipArchive::open

PHP function Edit on GitHub ✎

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

Open a ZIP file archive

Description

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

Opens a new or existing zip archive for reading, writing or modifying.

Since libzip 1.6.0, an empty file is not a valid archive any longer.

Note

When creating a new archive with ZipArchive::CREATE, the file is not actually written to disk until ZipArchive::close is called. Therefore, errors related to the file system (such as permission denied or a non-existent parent directory) will only be reported when calling ZipArchive::close, not when calling this method.

Parameters

filename

The file name of the ZIP archive to open.

flags

The mode to use to open the archive.

  • ZipArchive::OVERWRITE
  • ZipArchive::CREATE
  • ZipArchive::RDONLY
  • ZipArchive::EXCL
  • ZipArchive::CHECKCONS

Return Values

Returns true on success, false or one of the following error codes on error:

ZipArchive::ER_EXISTS

File already exists.

ZipArchive::ER_INCONS

Zip archive inconsistent.

ZipArchive::ER_INVAL

Invalid argument.

ZipArchive::ER_MEMORY

Malloc failure.

ZipArchive::ER_NOENT

No such file.

ZipArchive::ER_NOZIP

Not a zip archive.

ZipArchive::ER_OPEN

Can't open file.

ZipArchive::ER_READ

Read error.

ZipArchive::ER_SEEK

Seek error.

Examples

Open and extract

php
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    echo 'ok';
    $zip->extractTo('test');
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>

Create an archive

php
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('test.txt', 'file content goes here');
    $zip->addFile('data.txt', 'entryname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

Create an temporary archive

php
<?php
$name = tempnam(sys_get_temp_dir(), "FOO");
$zip = new ZipArchive;
$res = $zip->open($name, ZipArchive::OVERWRITE); /* truncate as empty file is not valid */
if ($res === TRUE) {
    $zip->addFile('data.txt', 'entryname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

Source: reference/zip/ziparchive/open.xml · from the official PHP manual (php/doc-en)