ZipArchive::open
PHP Manual
PHP Manual»ZipArchive»ZipArchive::open

ZipArchive::open

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

ZipArchive::open — Open a ZIP file archive

Опис

public function 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.

Зауваження:

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.

Параметри

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

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.

Приклади

Приклад #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';
}
?>
To Top