zip_open Fehler

Tix

Erfahrenes Mitglied
Das hier ist mein Code um eine Zip-Datei zu entpacken

PHP:
<?php
 $file = "test.zip";
 $dir = getcwd();
 function Unzip($dir, $file, $destiny="")
 {
    $dir .= DIRECTORY_SEPARATOR;
    $path_file = $dir . $file;
    $zip = zip_open($path_file);
    $_tmp = array();
    $count=0;
    if ($zip)
    {
 	   while ($zip_entry = zip_read($zip))
 	   {
 		   $_tmp[$count]["filename"] = zip_entry_name($zip_entry);
 		   $_tmp[$count]["stored_filename"] = zip_entry_name($zip_entry);
 		   $_tmp[$count]["size"] = zip_entry_filesize($zip_entry);
 		   $_tmp[$count]["compressed_size"] = zip_entry_compressedsize($zip_entry);
 		   $_tmp[$count]["mtime"] = "";
 		   $_tmp[$count]["comment"] = "";
 		   $_tmp[$count]["folder"] = dirname(zip_entry_name($zip_entry));
 		   $_tmp[$count]["index"] = $count;
 		   $_tmp[$count]["status"] = "ok";
 		   $_tmp[$count]["method"] = zip_entry_compressionmethod($zip_entry);
 		  
 		   if (zip_entry_open($zip, $zip_entry, "r"))
 		   {
 			   $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
 			   if($destiny)
 			   {
 				   $path_file = str_replace("/",DIRECTORY_SEPARATOR, $destiny . zip_entry_name($zip_entry));
 			   }
 			   else
 			   {
 				   $path_file = str_replace("/",DIRECTORY_SEPARATOR, $dir . zip_entry_name($zip_entry));
 			   }
 			   $new_dir = dirname($path_file);
 			  
 			   // Create Recursive Directory
 			   mkdirr($new_dir);
 			  
 
 			   $fp = fopen($dir . zip_entry_name($zip_entry), "w");
 			   fwrite($fp, $buf);
 			   fclose($fp);
 
 			   zip_entry_close($zip_entry);
 		   }
 		   echo "\n</pre>";
 		   $count++;
 	   }
 
 	   zip_close($zip);
    }
 }
 Unzip($dir,$file);
 ?>

Und das ist die passende Fehlermeldung

Code:
  Warning:  zip_open() [function.zip-open]: Cannot open zip archive C:\Programme\xampp\htdocs\immo\test.zip in C:\Programme\xampp\htdocs\immo\test2.php on line 8

Ich hab die aktuelleste xampp version. Da ist Standardmäßig alles aktiv (safemode off und zip enabled)

Wo liegt mein Fehler. Wäre nett wenn Ihr mir helfen könntet
 
N'Abend!

Also ich hatte genau dasselbe Problem wie du! Habe auch die neueste Xampp Version auf meinem Rechner allerdings kam ich auch nicht zu einem Ergebnis.

Alternativ habe ich folgendes gemacht:

- phpconcept besucht
- pclziplib runtergeladen und mit der gearbeitet!

damit habe ich meine Bildergalerie ausgestattet! funktioniert einwandfrei.

ich vermute das Problem liegt darin, dass du nicht die erforderliche Bibliothek
installiert hast. denn gzip (ich glaub so hiess das doch) und Zlib haben soweit ich
informiert bin nichts mit *.zip Dateien zu tun. Ich glaube gzip kann *.gz Dateien
bearbeiten aber keine *.zip!

Aber wie gesagt, PCLZip ist eine super alternative und das Schöne dabei ist,
du musst nichts installieren, sondern sie nur includen!

Falls du aber noch eine Lösung finden solltest (außer der PCLZip Alternative) wäre es nett wenn du es hier posten könntest!
 
PHP:
<?php
$file = "test.zip";
$dir = getcwd();
function Unzip($dir, $file, $destiny="")
{
   $dir .= DIRECTORY_SEPARATOR;
   $path_file = $dir . $file;
   $zip = zip_open($path_file);
   $_tmp = array();
   $count=0;
   if ($zip)
   {
       while ($zip_entry = zip_read($zip))
       {
           $_tmp[$count]["filename"] = zip_entry_name($zip_entry);
           $_tmp[$count]["stored_filename"] = zip_entry_name($zip_entry);
           $_tmp[$count]["size"] = zip_entry_filesize($zip_entry);
           $_tmp[$count]["compressed_size"] = zip_entry_compressedsize($zip_entry);
           $_tmp[$count]["mtime"] = "";
           $_tmp[$count]["comment"] = "";
           $_tmp[$count]["folder"] = dirname(zip_entry_name($zip_entry));
           $_tmp[$count]["index"] = $count;
           $_tmp[$count]["status"] = "ok";
           $_tmp[$count]["method"] = zip_entry_compressionmethod($zip_entry);
          
           if (zip_entry_open($zip, $zip_entry, "r"))
           {
               $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
               if($destiny)
               {
                   $path_file = str_replace("/",DIRECTORY_SEPARATOR, $destiny . zip_entry_name($zip_entry));
               }
               else
               {
                   $path_file = str_replace("/",DIRECTORY_SEPARATOR, $dir . zip_entry_name($zip_entry));
               }
               $new_dir = dirname($path_file);
              
               // Create Recursive Directory
               mkdir($new_dir);
              

               $fp = fopen($dir . zip_entry_name($zip_entry), "w");
               fwrite($fp, $buf);
               fclose($fp);

               zip_entry_close($zip_entry);
           }
           echo "\n</pre>";
           $count++;
       }

       zip_close($zip);
   }
}
Unzip($dir,$file);
?>

Das ist jetzt der Code der Funktioniert, mein Archiv was ausgelesen werden sollte war die ganze Zeit kaputt :( und ich such mit n Wolf
 
Hallo!

Also wenn ich mkdirr($new_dir) in mkdir($new_dir) änder, dann läuft es bei mir unter XAMPP.
Allerdings gibt er eine Warnung aus wenn die entpackten Dateien schon existieren:
Code:
Warning: mkdir() [function.mkdir]: File exists in C:\apache\xampp\htdocs\zip\unzip.php on line 40
Gruss Dr Dau
 
Zurück