PHP Conference China 2020

zip_read

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_readRead next entry in a ZIP file archive

Description

zip_read ( resource $zip ) : resource

Reads the next entry in a zip file archive.

Parameters

zip

A ZIP file previously opened with zip_open().

Return Values

Returns a directory entry resource for later use with the zip_entry_... functions, or FALSE if there are no more entries to read, or an error code if an error occurred.

Changelog

Version Description
8.0.0 This function is deprecated in favor of the Object API, see ZipArchive::statIndex().

See Also

add a note add a note

User Contributed Notes 3 notes

up
4
Anonymous
1 year ago
*Here is a simple example*
<?php
$zp
= zip_open('file.zip');

while (
$file = zip_read($zp)) {
    echo 
zip_entry_name($file).PHP_EOL;
}
?>

The output will be something similar to:

myfile.txt
mydir/
up
1
Christian
7 years ago
Note: Only the first 65535 entries will be returned, even if your archive contains more entries. See https://bugs.php.net/bug.php?id=59118 for details.
up
-18
nico at nicoswd dot com
12 years ago
If you get an error like this:

Warning: zip_read() expects parameter 1 to be resource, integer given in xxxxxx on line x

It's because zip_open() failed to open the file and returned an error code instead of a resource. It took me a while to figure out why it failed to open the file, until I tried to use the FULL path to the file.

<?php

// Even if the file exists, zip_open() will return an error code.
$file = 'file.zip';
$zip = zip_open($file);

// The workaround:
$file = getcwd() . '/file.zip';

// Or:
$file = 'C:\\path\\to\\file.zip';

?>

This worked for me on Windows at least. I'm not sure about other platforms.
To Top