Edit report at http://bugs.php.net/bug.php?id=53854&edit=1
ID: 53854 Updated by: rquadl...@php.net Reported by: rquadl...@php.net Summary: Missing constants for compression type. Status: Assigned Type: Bug Package: Zip Related Operating System: n/a PHP Version: 5.3SVN-2011-01-27 (SVN) Assigned To: aharvey Block user comment: N Private report: N New Comment: I took a file (an uncompressed WAV file) and compressed it using WinZip V15 using different algorithms. Using the following code ... <?php $zip = new ZipArchive; $zip->open('wav.zipx'); foreach(range(0, $zip->numFiles - 1) as $index) { print_r($stat = $zip->statIndex($index)); $zip->extractTo('.', array($stat['name'])); echo $zip->getStatusString(), PHP_EOL; } $zip->close(); Outputs ... Array ( [name] => WavPack.wav [index] => 0 [crc] => 1384274557 [size] => 154826 [mtime] => 1296208410 [comp_size] => 45366 [comp_method] => 97 ) Compression method not supported Array ( [name] => PPMD.wav [index] => 1 [crc] => 1384274557 [size] => 154826 [mtime] => 1296208410 [comp_size] => 100729 [comp_method] => 98 ) Compression method not supported Array ( [name] => LZMA.wav [index] => 2 [crc] => 1384274557 [size] => 154826 [mtime] => 1296208410 [comp_size] => 68162 [comp_method] => 14 ) Compression method not supported Array ( [name] => BZIP2.wav [index] => 3 [crc] => 1384274557 [size] => 154826 [mtime] => 1296208410 [comp_size] => 104633 [comp_method] => 12 ) Compression method not supported As you can see, 98, 97, 14 and 12 are all identified as the comp_method (correctly). None of these compression methods are supported by php_zip, but the constants should be present to allow determination of the method used. Interestingly WavPack was the best algorithm to use on uncompressed audio (which WinZip performed when I asked it to "compress to the smallest size"). I can send the zip file if needed (300K). I think it is important to remember that the zip files being accessed by php_zip may not have been produced by php_zip. Previous Comments: ------------------------------------------------------------------------ [2011-01-28 11:34:43] paj...@php.net If they are not implemented, no, it does not make sense to have them exposed. If one uses them he will then expect the compression mode to be set and used accordingly. However for reading archive and get information about a given compression mode, yes. But only if they are actually used and set by libzip. If not, please revert this change. ------------------------------------------------------------------------ [2011-01-28 11:22:37] rquadl...@php.net As the compression mechanisms are stored within the zip file itself, it isn't necessarily a requirement for php_zip to support compression/decompression of these types, just identification. Using WinZip V15.0, I've created an archive with CM_PPMD, CM_LZMA, CM_BZIP and CM_WAVPACK compressions. Still looking for LZ77 and Terse. The compression types are correctly identified by php_zip, so having the constants makes sense to me. I'll update the documentation to say that whilst identification of these types is performed, compression and decompression of these types is not currently supported. ------------------------------------------------------------------------ [2011-01-28 07:43:12] paj...@php.net Are you sure all compression modes are implemented? I don't think they are, afair that's also why I did not add them. ------------------------------------------------------------------------ [2011-01-28 05:19:55] ahar...@php.net This bug has been fixed in SVN. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2011-01-28 05:19:43] ahar...@php.net Automatic comment from SVN on behalf of aharvey Revision: http://svn.php.net/viewvc/?view=revision&revision=307807 Log: Fixed bug #53854 (Missing constants for compression type). Patch by Richard Quadling. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=53854 -- Edit this bug report at http://bugs.php.net/bug.php?id=53854&edit=1