ZipArchive::open
ZIP ファイルアーカイブをオープンする
説明
public boolint ZipArchive::open(string $filename
, int $flags
= 0)
libzip 1.6.0 以降では、空のファイルは有効なアーカイブではなくなりました。
パラメータ
-
filename
-
オープンする ZIP アーカイブのファイル名。
-
flags
-
アーカイブのオープンに使用するモード。
-
ZipArchive::OVERWRITE
-
ZipArchive::CREATE
-
ZipArchive::RDONLY
-
ZipArchive::EXCL
-
ZipArchive::CHECKCONS
戻り値
成功した場合に true
、失敗した場合は false
を返し、
エラー時には以下のエラーコードを返します。
-
ZipArchive::ER_EXISTS
-
ファイルが既に存在します。
-
ZipArchive::ER_INCONS
-
Zipアーカイブに不整合があります。
-
ZipArchive::ER_INVAL
-
不正な引数です。
-
ZipArchive::ER_MEMORY
-
メモリ確保に失敗しました。
-
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 '成功';
$zip->extractTo('test');
$zip->close();
} else {
echo '失敗、コード:' . $res;
}
?>
例2 アーカイブの作成
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
$zip->addFromString('test.txt', 'ここにファイルの内容を書きます');
$zip->addFile('data.txt', 'entryname.txt');
$zip->close();
echo '成功';
} else {
echo '失敗';
}
?>
例3 一時的なアーカイブの作成
<?php
$name = tempnam(sys_get_temp_dir(), "FOO");
$zip = new ZipArchive;
$res = $zip->open($name, ZipArchive::OVERWRITE); /* 空のファイルに切り詰めても無効です */
if ($res === TRUE) {
$zip->addFile('data.txt', 'entryname.txt');
$zip->close();
echo '成功';
} else {
echo '失敗';
}
?>