ID:               47023
 Updated by:       paj...@php.net
 Reported By:      cristi at imagis dot ro
-Status:           Feedback
+Status:           Closed
 Bug Type:         Zip Related
 Operating System: Windows XP SP3
 PHP Version:      5.2.8


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

[2009-01-07 09:36:17] paj...@php.net

Seems to be the same problem than #46985, which is fixed now.

Please try a snapshot (http://windows.php.net/snapshots/)

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

[2009-01-07 09:24:44] cristi at imagis dot ro

Description:
------------
I am experiencing some problems with ZipArchive, using PHP 5.2.8, with
php_zip supplied with this distribution. I am trying to archive couple
of folders and files using ZipArchive.

If i am replacing php_zip.dll with php_zip.dll from PHP 5.2.6 it works
without problems.

Testing same code using a PHP 5.2.7 installation (with php_zip.dll of
5.2.7) crashes archive also (see Expected Results section).

Reproduce code:
---------------
class My_ZipArchive extends ZipArchive
{
        public function addDir($filename, $localname)
        {
                // Adds a directory recursivelly, keeping the same structure.
                // @param string $filename The path to the file to add.
                // @param string $localname Local name inside ZIP archive.
                
                if($localname == NULL || empty($localname))
                        $localpath = "";
                else
                {
                        $localpath = $localname . '/';
                        $this->addEmptyDir($localname);
                }
                
                $iter = new DirectoryIterator($filename);
                
                foreach($iter as $file)
                {
                        // Only zip real files: no dots, no links.
                        if ($file->isDot() || (!$file->isFile() && 
!$file->isDir())) {
                                continue;
                        }
        
                        $method = $file->isFile() ? 'addFile' : 'addDir';
        
                        echo $file->getPathname().' - '.$method.'<br />';
                        
                        $this->$method($file->getPathname(), 
$localpath.$file->getFilename());
                }
        }
}

                        try
                        {
                                //create output archive
                                $zip = new My_ZipArchive();
                                
                                $zip->open( 'archive.zip', ZIPARCHIVE::CREATE);
        
                                $zip->addDir( 'd:\_Work\test\output', '');
                                
                                $result = $zip->close();
                                //finish create output archive
                        }
                        catch(Exception $e) {
                        echo 'Caught exception: ',  $e->getMessage(), "\n";
                        }
                        
                        exit($result.'finished');

Expected result:
----------------
This code should make a zip with my files.

Actual result:
--------------
If i have 3 .php files to add them to zip i got a corrupted archive. 

If i remove one of them i got a good zip archive.

If i am opening corrupted archive with a zip utility archive doesn't
seems to have any files within or is reported directly as corrupted. If
i am using a repair tool i got a working archive.


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


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

Reply via email to