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 — ZIP ファイルアーカイブをオープンする

説明

public function ZipArchive::open(string $filename, int $flags = 0): bool|int

新しい、または既に存在する zip アーカイブを 読み込み/書き込み/変更用にオープンします。

libzip 1.6.0 以降では、空のファイルは有効なアーカイブではなくなりました。

注意:

ZipArchive::CREATE で新しいアーカイブを作成する場合、 ZipArchive::close() を呼び出すまで、 ファイルは実際にはディスクに書き込まれません。 そのため、ファイルシステムに関連するエラー (権限がない、親ディレクトリが存在しないなど) は、 このメソッドではなく、 ZipArchive::close() を呼び出したときに報告されます。

パラメータ

filename

オープンする ZIP アーカイブのファイル名。

flags

アーカイブのオープンに使用するモード。

戻り値

成功した場合に 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 '失敗';
}
?>
To Top