ZIP ファイルアーカイブをオープンする

# 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 以降では、空のファイルは有効なアーカイブではなくなりました。

### パラメータ

`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 '失敗';
    }
    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open