ZipArchive::addFile

指定したパスからファイルを ZIP アーカイブに追加する

説明

public bool ZipArchive::addFile(
    string $filepath,
    string $entryname = "",
    int $start = 0,
    int $length = ZipArchive::LENGTH_TO_END,
    int $flags = ZipArchive::FL_OVERWRITE
)

指定したパスから、ファイルを ZIP アーカイブに追加します。

注意: ポータビリティを考慮して、ZIP ファイル名のディレクトリ区切り文字には常にスラッシュ (/) を使うことを推奨します。

パラメータ

filepath

追加するファイルへのパス。

entryname

空でない値を指定した場合は ZIP アーカイブ内部での名前となり、filepath を上書きします。

start

ファイルを一部コピーする場合の開始位置。

length

ファイルを一部コピーする場合の、コピーする長さ。 ZipArchive::LENGTH_TO_END (0) を指定すると、 ファイルサイズのぶんだけコピーします。 ZipArchive::LENGTH_UNCHECKED を指定すると、 start の位置から)ファイル全体をコピーします。

flags

以下のビットマスクの組み合わせ: ZipArchive::FL_OVERWRITE, ZipArchive::FL_ENC_GUESS, ZipArchive::FL_ENC_UTF_8, ZipArchive::FL_ENC_CP437, ZipArchive::FL_OPEN_FILE_NOW。 これらの定数の振る舞いは、定義済みの定数 で説明しています。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0, PECL zip 1.18.0 flags が追加されました。
8.3.0, PECL zip 1.22.1 ZipArchive::FL_OPEN_FILE_NOW が追加されました。
8.3.0, PECL zip 1.22.2 ZipArchive::LENGTH_TO_ENDZipArchive::LENGTH_UNCHECKED が追加されました。

この例は、ZIP ファイルアーカイブ test.zip をオープンし、ファイル /path/to/index.txtnewname.txt という名前で追加します。

例1 オープンおよび追加

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->addFile('/path/to/index.txt', 'newname.txt');
    $zip->close();
    echo '成功';
} else {
    echo '失敗';
}
?>

注意

注意:

アーカイブにファイルを追加するよう設定すると、PHP はそのファイルをロックします。 ロックが解除されるのは、 ZipArchive::close を呼ぶなり ZipArchive オブジェクトを破棄するなりして ZipArchive オブジェクトが閉じられたときだけです。 そのため、追加しようとしているファイルがロックが解除される前に削除されるようなことは起こりません。

参考

  • ZipArchive::replaceFile