(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::open — Open a ZIP file archive
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.
Зауваження:
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.
filenameThe file name of the ZIP archive to open.
flagsThe mode to use to open the archive.
Returns true on success, false or one of the following error codes on error:
ZipArchive::ER_EXISTSFile already exists.
ZipArchive::ER_INCONSZip archive inconsistent.
ZipArchive::ER_INVALInvalid argument.
ZipArchive::ER_MEMORYMalloc failure.
ZipArchive::ER_NOENTNo such file.
ZipArchive::ER_NOZIPNot a zip archive.
ZipArchive::ER_OPENCan't open file.
ZipArchive::ER_READRead error.
ZipArchive::ER_SEEKSeek error.
Приклад #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;
}
?>Приклад #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';
}
?>Приклад #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';
}
?>