victor78/zippy-ext

The 7-Zip integration for the Zippy.

Maintainers

Package info

github.com/victor78/ZippyExt

Wiki

Type:zippy-extension

pkg:composer/victor78/zippy-ext

Statistics

Installs: 34 825

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.3 2026-06-06 23:38 UTC

This package is not auto-updated.

Last update: 2026-06-06 23:38:43 UTC


README

CI Latest Stable Version License Total Downloads

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 (7za or 7z in PATH) — 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 (use extract() instead).
  • .zip is 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.