PHP: Zip File Functions (Read Only Access) - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<yp_orderzip_close>
view the version of this page
Last updated: Fri, 18 Apr 2003

CXII. Zip File Functions (Read Only Access)

�vod

This module enables you to transparently read ZIP compressed archives and the files inside them.

Po�adavky

This module uses the functions of the library by Guido Draheim. You need ZZIPlib version >= 0.10.6.

Note that ZZIPlib only provides a subset of functions provided in a full implementation of the ZIP compression algorithm and can only read ZIP file archives. A normal ZIP utility is needed to create the ZIP file archives read by this library.

Instalace

Zip support in PHP is not enabled by default. You will need to use the --with-zip[=DIR] configuration option when compiling PHP to enable zip support.

Pozn�mka: Zip support before PHP 4.1.0 is experimental. This section reflects the Zip extension as it exists in PHP 4.1.0 and later.

Konfigurace b�hu

Toto roz���en� nem� definov�no ��dn� konfigura�n� direktivy.

Typy prost�edk�

Toto roz���en� nem� definov�n ��dn� typ prost�edku (resource).

P�eddefinovan� konstanty

Toto roz���en� nem� definov�ny ��dn� konstanty.

P��klady

This example opens a ZIP file archive, reads each file in the archive and prints out its contents. The test2.zip archive used in this example is one of the test archives in the ZZIPlib source distribution.

P��klad 1. Zip Usage Example

<?php

$zip = zip_open("/tmp/test2.zip");

if ($zip) {

    while ($zip_entry = zip_read($zip)) {
        echo "Name:               " . zip_entry_name($zip_entry) . "\n";
        echo "Actual Filesize:    " . zip_entry_filesize($zip_entry) . "\n";
        echo "Compressed Size:    " . zip_entry_compressedsize($zip_entry) . "\n";
        echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";

        if (zip_entry_open($zip, $zip_entry, "r")) {
            echo "File Contents:\n";
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            echo "$buf\n";

            zip_entry_close($zip_entry);
        }
        echo "\n";

    }

    zip_close($zip);

}

?>
Obsah
zip_close -- Close a Zip File Archive
zip_entry_close -- Close a Directory Entry
zip_entry_compressedsize -- Retrieve the Compressed Size of a Directory Entry
zip_entry_compressionmethod -- Retrieve the Compression Method of a Directory Entry
zip_entry_filesize -- Retrieve the Actual File Size of a Directory Entry
zip_entry_name -- Retrieve the Name of a Directory Entry
zip_entry_open -- Open a Directory Entry for Reading
zip_entry_read -- Read From an Open Directory Entry
zip_open -- Open a Zip File Archive
zip_read -- Read Next Entry in a Zip File Archive


User Contributed Notes
Zip File Functions (Read Only Access)
add a note
vangoethem at hotmail dot com
28-Dec-2001 06:51

If you are looking for a way to create ZIP files dynamically in PHP, you should look at the wonderful zipfile class.
It seems there is no official page for this class. You may get it by retrieving the zip.lib.php from the PhpMyAdmin 2.2.2:

fbiggun at hotmail dot com
03-Jan-2002 08:29

Check out these pages on the Zend Web Site. The author of the zipfile class explains how his class runs!

Have fun ;)




guidod at gmx dot de
16-Apr-2002 06:22

- look at - -
it is a C++ class that can also write zip files.
it is modelled after the resp. java interface.

Please also note that I (Guido Draheim) can not
answer questions on compiling zziplib-support
into php, I did not add it, and I do not know
anything about the php module interface. If you
find bugs or have suggestions for more features
then I would be pleased to hear about it. TIA, guido

bermi[arroba]akelos.com
04-Oct-2002 01:27

Here is a link to a class for creating and reading zip files

a1cypher at shaw dot ca
11-Oct-2002 12:28

For creating zip files, I highly suggest that you have a look at the class used in phpMyAdmin.  It makes it very easy to do and it appears to be opensource.
ottawasixtyseven at hotmail dot com
29-Oct-2002 07:04

WOW ... after weeks and weeks of research I thought I'd make somebody elses life a little easier. If you're wondering how to make PHP 4.2.3 read windows zip files (winzip, pkzip, etc) do this:

NOTE: THIS IS FOR WINDOWS SERVERS NOT LINUX OR OTHER. You need zziplib for Linux.

ON PHP WINDOWS SERVER

1) Grab the php_zip.dll from the extensions dir in php-4.3.0pre2-Win32.zip

2) Add a line extension=php_zip.dll to your php.ini

3) Restart your web server

php_zip.dll obviously works on PHP 4.3.0pre2 but you can't run Zend Optimizer on PHP 4.3 (yet). You can run Zend Optimizer on PHP 4.2.3 but it doesn't ship with php_zip.dll. The php_zip.dll that ships with PHP 4.3.0pre2 may even work with older version but I haven't tested that.

For documentation on how to use the zip functions (not the gzip functions that are documented on the php site) go here:



Newbie Von Greenhorn

chris
23-Mar-2003 05:32

Watch out with archives that contain subfolders if you're using the zip functions to extract archives to actual files.  Let's say you're trying to extract foldername/filename.txt from the archive.  You can't fopen a directory that doesn't exist, so you'll have to check for the existance of directory foldername and create it if it isn't found, then fopen foldername/filename.txt and begin writing to that.
NOSP at M dot patrick_allaert(AROBAS)pandora dot be
08-Apr-2003 05:08

If you just want to unzip everything of a zip file in a directory (and create unexisting directories), let's try this:

function unzip($file, $path) {
 $zip = zip_open($file);
 if ($zip) {
  while ($zip_entry = zip_read($zip)) {
     if (zip_entry_filesize($zip_entry) > 0) {
       // str_replace must be used under windows to convert "/" into "\"
     $complete_path = $path.str_replace('/','\\',dirname(zip_entry_name($zip_entry)));
      $complete_name = $path.str_replace ('/','\\',zip_entry_name($zip_entry));
      if(!file_exists($complete_path)) {
         $tmp = '';
        foreach(explode('\\',$complete_path) AS $k) {
           $tmp .= $k.'\\';
           if(!file_exists($tmp)) {
            mkdir($tmp, 0777);
           }
         }
       }
     if (zip_entry_open($zip, $zip_entry, "r")) {
         $fd = fopen($complete_name, 'w');
         fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
        fclose($fd);
         zip_entry_close($zip_entry);
       }
   }
   }
   zip_close($zip);
 }
}

To use this function:
unzip('c:\\file.zip','c:\\temp\\'); // BE CAREFULL: second argument *MUST* finish by a "\" ! ("/" under *nix)

Patrick

add a note

<yp_orderzip_close>
 Last updated: Fri, 18 Apr 2003
show source | credits | mirror sites 
Copyright © 2001-2003 The PHP Group
All rights reserved.
This mirror generously provided by: /
Last updated: Sun May 11 13:10:55 2003 CEST