PHP8 ZipArchive::open
(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::open — 打开ZIP文件存档
说明
public ZipArchive::open(string $filename, int $flags = 0): bool|int
打开新的或现有的 zip 存档以进行读取、写入或修改。
从 libzip 1.6.0 开始,空文件不再是有效的存档。
参数
filename
要打开的 ZIP 存档的文件名。
flags
用于打开存档的模式。
ZipArchive::OVERWRITE
ZipArchive::创建
ZipArchive::RDONLY
zipArchive.EXCL (英语)
ZipArchive::CHECKCONS
返回值
成功时返回 true,错误时返回 false 或以下错误代码之一:
ZipArchive::ER_EXISTS
- 文件已存在。
ZipArchive::ER_INCONS
- Zip 存档不一致。
ZipArchive::ER_INVAL
- 无效参数。
ZipArchive::ER_MEMORY
- Malloc 失败。
ZipArchive::ER_NOENT
- 没有这样的文件。
ZipArchive::ER_NOZIP
- 不是 zip 存档。
ZipArchive::ER_OPEN
- 无法打开文件。
ZipArchive::ER_READ
- 读取错误。
ZipArchive::ER_SEEK
- 查找错误。
示例
示例 #1 打开并解压
<?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 创建存档
<?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 创建临时存档
<?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';
}
?>