victor78 / zippy-ext
The 7-Zip integration for the Zippy.
Requires
- php: >=8.1
- alchemy/zippy: ^1.0
- symfony/process: ^5.4.51|^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is not auto-updated.
Last update: 2026-06-06 23:38:43 UTC
README
ZippyExt (aka ZippyExtended) is a library extended over Zippy providing the strategy and adapter for using 7-Zip, including password support.
Requirements
- PHP >= 8.1
- 7-Zip (
7zaor7zinPATH) — required only for 7zip adapter
PHP Compatibility
| ZippyExt | PHP |
|---|---|
| 1.x | 8.1–8.3 |
| 0.x | 7.0+ |
Installation
The only supported installation method is via Composer. Run the following command to require ZippyExt in your project:
composer require victor78/zippy-ext
Adapters
ZippyExt currently supports the following drivers and file formats:
- zip
- .zip
- PHP zip extension
- .zip
- GNU tar
- .tar
- .tar.gz
- .tar.bz2
- BSD tar
- .tar
- .tar.gz
- .tar.bz2
- 7zip
- .zip (with optional AES-256 password encryption)
Getting started
All the following code samples assume that ZippyExt is loaded and available as $zippy. You need the following code (or variation of) to load ZippyExt:
<?php use Victor78\ZippyExt\Zippy; // Require Composer's autoloader require __DIR__ . '/vendor/autoload.php'; // Load Zippy $zippy = Zippy::load();
List an archive's contents:
// Open an archive $archive = $zippy->open('build.tar'); // Iterate through members foreach ($archive as $member) { echo "Archive contains $member" . PHP_EOL; }
Extract an archive to a specific directory:
// Open an archive $archive = $zippy->open('build.tar'); // Extract archive contents to `/tmp` $archive->extract('/tmp');
Create a new archive
// Creates an archive.zip that contains a directory "folder" that contains // files contained in "/path/to/directory" recursively $archive = $zippy->create('archive.zip', array( 'folder' => '/path/to/directory' ), true);
Use 7zip
If you need to use 7zip archiving to create a zip archive, use the fourth parameter:
// Creates an archive.zip using the 7zip engine $archive = $zippy->create('archive.zip', $files, true, '7zip');
To create an AES-256 encrypted archive, pass the password as the fifth parameter:
// Creates an archive.zip with AES-256 encryption $archive = $zippy->create('archive.zip', $files, true, '7zip', 'your_password');
To open and extract a password-protected 7zip archive:
// Open archive with password $archive = $zippy->open('archive.zip', '7zip', 'your_password'); $archive->extract('folder_for_extracted');
Known Limitations
- Password protection is only supported with the 7zip adapter. Standard zip and tar adapters ignore the password parameter.
extractMembers()is not supported for the 7zip adapter (useextract()instead)..zipis ambiguous: by default,open('file.zip')may resolve to standard zip strategy. If you need 7zip-specific behavior (including password flow), pass type explicitly:open('file.zip', '7zip', 'your_password').
Documentation
Documentation in English and Russian is available in the wiki.
License
This project is licensed under the MIT license.