PhpZip
PhpZip
is a php-library for extended work with ZIP-archives.
Table of contents
- Features
- Requirements
- Installation
- Examples
- Glossary
- Documentation
- Overview of methods of the class
\PhpZip\ZipFile
- Creation/Opening of ZIP-archive
- Reading entries from the archive
- Iterating entries
- Getting information about entries
- Adding entries to the archive
- Deleting entries from the archive
- Working with entries and archive
- Working with passwords
- zipalign - alignment tool for Android (APK) files
- Undo changes
- Saving a file or output to a browser
- Closing the archive
- Overview of methods of the class
- Running the tests
- Changelog
- Upgrade
Features
- Opening and unzipping zip files.
- Creating ZIP-archives.
- Modifying ZIP archives.
- Pure php (not require extension
php-zip
and class\ZipArchive
). - It supports saving the archive to a file, outputting the archive to the browser, or outputting it as a string without saving it to a file.
- Archival comments and comments of individual entry are supported.
- Get information about each entry in the archive.
- Only the following compression methods are supported:
- No compressed (Stored).
- Deflate compression.
- BZIP2 compression with the extension
php-bz2
.
- Support for
ZIP64
(file size is more than 4 GB or the number of entries in the archive is more than 65535). - Built-in support for aligning the archive to optimize Android packages (APK)
zipalign
. - Working with passwords for PHP 5.5
Attention!
For 32-bit systems, the
Traditional PKWARE Encryption (ZipCrypto)
encryption method is not currently supported. Use the encryption methodWinZIP AES Encryption
, whenever possible.- Set the password to read the archive for all entries or only for some.
- Change the password for the archive, including for individual entries.
- Delete the archive password for all or individual entries.
- Set the password and/or the encryption method, both for all, and for individual entries in the archive.
- Set different passwords and encryption methods for different entries.
- Delete the password for all or some entries.
- Support
Traditional PKWARE Encryption (ZipCrypto)
andWinZIP AES Encryption
encryption methods. - Set the encryption method for all or individual entries in the archive.
Requirements
PHP
>= 5.5 (preferably 64-bit).- Optional php-extension
bzip2
for BZIP2 compression. - Optional php-extension
openssl
ormcrypt
forWinZip Aes Encryption
support.
Installation
composer require nelexa/zip
Examples
// create new archive
$zipFile = new \PhpZip\ZipFile();
try{
$zipFile
->addFromString('zip/entry/filename', 'Is file content') // add an entry from the string
->addFile('/path/to/file', 'data/tofile') // add an entry from the file
->addDir(__DIR__, 'to/path/') // add files from the directory
->saveAsFile($outputFilename) // save the archive to a file
->close(); // close archive
// open archive, extract, add files, set password and output to browser.
$zipFile
->openFile($outputFilename) // open archive from file
->extractTo($outputDirExtract) // extract files to the specified directory
->deleteFromRegex('~^\.~') // delete all hidden (Unix) files
->addFromString('dir/file.txt', 'Test file') // add a new entry from the string
->setPassword('password') // set password for all entries
->outputAsAttachment('library.jar'); // output to the browser without saving to a file
}
catch(\PhpZip\Exception\ZipException $e){
// handle exception
}
finally{
$zipFile->close();
}
Other examples can be found in the tests/
folder
Glossary
Zip Entry - file or folder in a ZIP-archive. Each entry in the archive has certain properties, for example: file name, compression method, encryption method, file size before compression, file size after compression, CRC32 and others.
Documentation:
Overview of methods of the class \PhpZip\ZipFile
- ZipFile::__construct - initializes the ZIP archive.
- ZipFile::addAll - adds all entries from an array.
- ZipFile::addDir - adds files to the archive from the directory on the specified path without subdirectories.
- ZipFile::addDirRecursive - adds files to the archive from the directory on the specified path with subdirectories.
- ZipFile::addEmptyDir - add a new directory.
- ZipFile::addFile - adds a file to a ZIP archive from the given path.
- ZipFile::addSplFile - adds a
\SplFileInfo
to a ZIP archive. - ZipFile::addFromFinder - adds files from the
Symfony\Component\Finder\Finder
to a ZIP archive. - ZipFile::addFilesFromIterator - adds files from the iterator of directories.
- ZipFile::addFilesFromGlob - adds files from a directory by glob pattern without subdirectories.
- ZipFile::addFilesFromGlobRecursive - adds files from a directory by glob pattern with subdirectories.
- ZipFile::addFilesFromRegex - adds files from a directory by PCRE pattern without subdirectories.
- ZipFile::addFilesFromRegexRecursive - adds files from a directory by PCRE pattern with subdirectories.
- ZipFile::addFromStream - adds a entry from the stream to the ZIP archive.
- ZipFile::addFromString - adds a file to a ZIP archive using its contents.
- ZipFile::close - close the archive.
- ZipFile::count - returns the number of entries in the archive.
- ZipFile::deleteFromName - deletes an entry in the archive using its name.