(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::addFile — Adds a file to a ZIP archive from the given path
$filepath,$entryname = "",$start = 0,$length = ZipArchive::LENGTH_TO_END,$flags = ZipArchive::FL_OVERWRITEAdds a file to a ZIP archive from a given path.
注意: 为了最大限度地提高代码可移植性,建议在 ZIP 文件名中使用斜线 (
/) 做为目录分隔符。
filepathThe path to the file to add.
entryname
       If supplied and not empty, this is the local name inside the ZIP archive that will override the filepath.
      
startFor partial copy, start position.
length
       For partial copy, length to be copied,
       if ZipArchive::LENGTH_TO_END (0) the file size is used,
       if ZipArchive::LENGTH_UNCHECKED the whole file is used
       (starting from start).
      
flags
       Bitmask consisting of
       ZipArchive::FL_OVERWRITE,
       ZipArchive::FL_ENC_GUESS,
       ZipArchive::FL_ENC_UTF_8,
       ZipArchive::FL_ENC_CP437,
       ZipArchive::FL_OPEN_FILE_NOW.
       The behaviour of these constants is described on the
       ZIP constants page.
      
| 版本 | 说明 | 
|---|---|
| 8.0.0 / 1.18.0 | 
        flags was added.
        | 
      
| 8.3.0 / 1.22.1 | 
        ZipArchive::FL_OPEN_FILE_NOW was added.
        | 
      
| 8.3.0 / 1.22.2 | 
        ZipArchive::LENGTH_TO_END and ZipArchive::LENGTH_UNCHECKED were added.
        | 
      
This example opens a ZIP file archive test.zip and add the file /path/to/index.txt. as newname.txt.
示例 #1 Open and add
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->addFile('/path/to/index.txt', 'newname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>注意:
When a file is set to be added to the archive, PHP will lock the file. The lock is only released once the ZipArchive object has been closed, either via ZipArchive::close() or the ZipArchive object being destroyed. This may prevent you from being able to delete the file being added until after the lock has been released.