Req #41456 [Com]: Cannot decompress newly added files

From: Date: Sat, 19 Mar 2016 02:34:31 +0000
Subject: Req #41456 [Com]: Cannot decompress newly added files
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199934@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=41456&edit=1 ID: 41456 Comment by: david dot proweb at gmail dot com Reported by: sander dot marechal at tribal dot nl Summary: Cannot decompress newly added files Status: Assigned Type: Feature/Change Request Package: Zip Related Operating System: Linux PHP Version: 5.2.2 Assigned To: pajoye Block user comment: N Private report: N New Comment: @pajoye Do you have some solution to this case? Seems simple just return the content stored on memory. Thanks! Previous Comments: ------------------------------------------------------------------------ [2007-05-24 09:07:02] pajoye@php.net "Alternatively, would it be possible to add a ZipArchive::flush() method which applies all pending operations, so I can safely read from it afterwards?" A flush method is in my todo, that's why I changed this bug status to a feature request :) "I don't have the filename around but just the ZipArchive instance." I realize that the filename propriety does not always work. It should contain the filename of the Zip archive (not sure when it changed, more about this problem later). But it is what you may use as a temporary solution. ------------------------------------------------------------------------ [2007-05-24 07:30:25] sander dot marechal at tribal dot nl In that case, can't ZipArchive detect I'm trying to read a file that has pending operations and read from it's internal cache instead of from the file? Alternatively, would it be possible to add a ZipArchive::flush() method which applies all pending operations, so I can safely read from it afterwards? My PHP application processes a lot of ODF files, which are essentially ZIP containers. So, I pass around a lot of ZipArchive instances by reference. I usually can't close and reopen the file because I don't have the filename around but just the ZipArchive instance. ------------------------------------------------------------------------ [2007-05-23 22:14:53] pajoye@php.net All operations (delete, comments, etc.) are applied to the zip file on close, not only the added files. It allows undo, sanity checks as well as a couple of improvements in the final zip files. "// Please make sure a dummy test.zip exist before running this code" Use the creation mode :) ------------------------------------------------------------------------ [2007-05-21 12:49:28] sander dot marechal at tribal dot nl Description: ------------ When I add or update a file in the zip archive, I cannot read the new file without closing and reopening the archive first. If this turns out to be a limitation in zlib then I suggest that a ZipArchive::flush() method of some sorts is added which can be called between a write and a read to produce the expected result. Reproduce code: --------------- #!/usr/bin/php -q <?php // Please make sure a dummy test.zip exist before running this code $zip = new ZipArchive(); $zip->open('test.zip'); $zip->addFromString('test.txt', 'some text'); echo "Before: " . $zip->getFromName('test.txt') . "\n"; $zip->close(); $zip->open('test.zip'); echo "After: " . $zip->getFromName('test.txt') . "\n"; ?> Expected result: ---------------- Both the 'before' and 'after' should output 'some text'. Actual result: -------------- 'before' is empty. Only 'after' shows 'some text'. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=41456&edit=1

« previous php.bugs (#199934) next »