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