Edit report at https://bugs.php.net/bug.php?id=55383&edit=1
ID: 55383
User updated by: andreas at ultra-vires dot de
Reported by: andreas at ultra-vires dot de
Summary: Trying to open big archives (~2GB) produces error:
ZIPARCHIVE::ER_NOZIP
Status: Open
Type: Bug
Package: Zip Related
Operating System: WinXP (32Bit) & SuseLinux(64Bit)
PHP Version: 5.3SVN-2011-08-08 (SVN)
Block user comment: N
Private report: N
New Comment:
Hello again,
some time passed by and I did some further tests on the ZipArchive class...with
really strange results... Here are my experiances:
Again, I have a very big archive:
Folders: 2346
Files: 109470
Size: 8158345387
Compressed: 5374915526
When I try to extract this archive with 7zip (7-Zip [64] 9.20), it tells me in
the end: "Everything is Ok"
Trying to open this archive with PHP's ZipArchive Class, always error
"ZIPARCHIVE:NO_ZIP" arrises (error code 19). (on the same Linux 64bit machine -
Suse)
Well, I coded a shell execute in PHP and call the 7z binary which extracts this
archive into a temp folder -> success, all files are extracted as expected.
Next, I create a new ZipArchive like this:
<?php
$zip = new ZIPArchive();
if ($zip->open($new_ziparchive, ZIPARCHIVE::OVERWRITE) !== true)
die('Failed to create new ZIP-Archive: '.$new_ziparchive);
[...]
?>
No errors, since here.
Now, I recursively loop through the (sub)folders of the previously extracted
archive (again: extracted whith 7zip) and create the new ZIP-Archive with PHP
ZipArchive Class... Successfully!!!
After $zip->close(); I've got a valid ZIP-Archive and there is no problem to
access it with 7Zip. I can uncompress this without any problems.
BUT: When I try to open this ZIP with the PHP's ZipArchive Class again, the
well known Error "ER_NOZIP" (Error Code 19) comes up!
Strange: Creating very large archives is not a problem, but reading them after
creation (whith the same library!!!) is not possible with ZipArchive Class...
What the heck...?!
Any help, ideas, hints??
Previous Comments:
------------------------------------------------------------------------
[2011-08-09 09:08:19] andreas at ultra-vires dot de
Description:
------------
I try to read ZIP-Archives and always get Error "ZIPARCHIVE::ER_NOZIP" when
size of the archive is bigger than 1.xx GB (nearly 2 GB, and more) and ZIP
contains more than 15.000 (bit more or less) files.
Trying to open "very large" archives always fails with errocode
"ZIPARCHIVE::ER_NOZIP".
Sometimes I need to open "verly large" archies (up to 10 GB, containing 30.000
files or even more). In some cases some sub-folders inside the archive contain
more than 10.000 files... I have no influence on the ZIP-Creation Process, so a
tipp like "Try to create smaller ZIPs!" doesn't help me. ;-)
But I need to look inside the archives, afterwards...
I've tested under WinXP SP3 (32Bit, PHP 5.3.1) and Suse Linux (64Bit, PHP
5.3.6).
PHP is running as Apache module. Both machines have the same phenomenon.
I did some tests with several different settings while compressing algos (using
7zip), but always the same result. Smaller archives never produce that error.
Do exist limits (ammount of files / ZIP-Filesize) while handling ZIP-Archives
in PHP? Trying to list/extract theese "bad" Archives on the command line (e.g.
with 7zip) always succeed.
This bug is different from Bug #44974: ZipArchive can't open large archives.
Again: I get "ZIPARCHIVE::ER_NOZIP", NOT "ZIPARCHIVE::ER_READ"!!
And I do not have problems on archives containing 1000, or 2000 files...
Thanks in advance.
Test script:
---------------
<?php
$file = "3GB_ArchiveWith30000Files.zip";
$zip = new ZipArchive();
$errCode = $zip->open($file, ZIPARCHIVE::CHECKCONS);
if ($errCode == ZIPARCHIVE::ER_NOZIP)
echo "Fail.";
// Outputs "Fail." :(
?>
Expected result:
----------------
Outputs "Fail." on large archives, since they contain ten thousands of files
or/and have filsize nearby 2GB.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=55383&edit=1