ZipArchive::open

Open a ZIP file archive

Description

public boolint ZipArchive::open(string $filename, int $flags = 0)

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.

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

Example #1 Open and extract

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

Example #2 Create an archive

<?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';
}
?>

Example #3 Create an temporary archive

<?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';
}
?>