ID:               46985
 Updated by:       paj...@php.net
 Reported By:      killerbg at gmail dot com
 Status:           Feedback
 Bug Type:         Zip Related
 Operating System: Windows XP Professional SP3
 PHP Version:      5.2.8
 Assigned To:      pajoye
 New Comment:

It works just fine here (in apache2 sapi, iis, fcgi and cli).

Can you try the following script please? I suspect some other errors
happening and they are not displayed. Be sure to have display_errors
activated.

By the way, in the latest releases there are "addFromPattern"/"Glob"
functions which let you add recursively something like "*.jpeg" :)

<?php
$path = 'C:\yourpath\\';
$count = 0;


function archive($path, $local)
{
        global $zip, $count;
        if ($handle = opendir($path)) {
                while (($file = readdir($handle)) !== false) {
                        if (($file != ".") && ($file != "..")) {
                                echo "$file\n";
                                var_dump($local, $file, $path);
                                if (is_dir($path . $file)) {
                                        $zip->addEmptyDir($local . $file . "/");
                                        archive($path . $file . "/", $local . 
$file . "/");
                                } elseif (is_file($path . $file)) {
                                        if ($count > 128) {
                                                $zip->close();
                                                $zip->open($GLOBALS["file"]);
                                                $count = 0;
                                        }
                                        $zip->addFile($path . $file, $local . 
$file);
                                        $count++;
                                }
                        }
                }
                closedir($handle);
        }
        echo "count: $count\n";
}
$file = 't.zip';

$zip = new ZipArchive();

if (($zip->open($file, ZipArchive::CREATE)) === TRUE) {
        archive($path, null);
        $zip->close();

}

echo "done\n";



Previous Comments:
------------------------------------------------------------------------

[2008-12-31 23:12:49] killerbg at gmail dot com

Here is an archive containing both the corrupted file created with the
new versions, a good file created with the same script and older version
(5.2.6) and the script used -
http://rapidshare.com/files/178582253/Error.zip.html

------------------------------------------------------------------------

[2008-12-31 21:21:33] paj...@php.net

I can't reproduce it here (xp sp3 and vista/2k8).

Please provide the file(s) (the minimum required to create a corrupted
archive) and the script you are using.

------------------------------------------------------------------------

[2008-12-31 20:27:12] killerbg at gmail dot com

Description:
------------
On Windows XP Professional Service Pack 3 with Apache 2.2.11 and PHP
5.2.8 - PHP 5.2.9 loaded as dynamic module when creating archive and
adding files and/or folders the ouput is incorrect and the file gets
corrupted. Even trying to open it again with the script results error
code 19.

Reproduce code:
---------------
$file = tempnam("/tmp/", "php");
$zip = new ZipArchive();
if (($zip->open($file, ZipArchive::OVERWRITE)) === TRUE)
{
        $zip->addEmptyDir("Directory");
        $zip->addFile("File");
        $zip->close();
}


Expected result:
----------------
Correctly created zip archive file with unique name located in the
temporaly directory.

Actual result:
--------------
Only the firsts few added files visible but corrupted acording to the
crc32 record.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=46985&edit=1

Reply via email to