(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::open — Open a ZIP file archive
$filename
, int $flags
= 0): bool|intOpens a new or existing zip archive for reading, writing or modifying.
Since libzip 1.6.0, a empty file is not a valid archive any longer.
filename
The file name of the ZIP archive to open.
flags
The mode to use to open the archive.
Returns true
on success, false
or one of the following error codes on error:
ZipArchive::ER_EXISTS
ZipArchive::ER_INCONS
ZipArchive::ER_INVAL
ZipArchive::ER_MEMORY
ZipArchive::ER_NOENT
ZipArchive::ER_NOZIP
ZipArchive::ER_OPEN
ZipArchive::ER_READ
ZipArchive::ER_SEEK
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';
}
?>