PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ZipArchive::renameIndex> <ZipArchive::locateName
Last updated: Fri, 14 Nov 2008

view this page in

ZipArchive::open

(No version information available, might be only in CVS)

ZipArchive::openOuvre une archive ZIP

Description

mixed ZipArchive::open ( string $filename [, int $flags ] )

Ouvre une nouvelle archive ZIP pour lecture, écriture et modification.

Liste de paramètres

filename

Le nom du fichier ZIP à ouvrir.

flags

Le mode à utiliser pour ouvrir l'archive.

  • ZIPARCHIVE::OVERWRITE

  • ZIPARCHIVE::CREATE

  • ZIPARCHIVE::EXCL

  • ZIPARCHIVE::CHECKCONS

Valeurs de retour

Error codes

Retourne TRUE en cas de succès ou sinon, le code erreur

  • ZIPARCHIVE::ER_EXISTS

  • ZIPARCHIVE::ER_INCONS

  • ZIPARCHIVE::ER_INVAL

  • ZIPARCHIVE::ER_MEMORY

  • ZIPARCHIVE::ER_NOENT

  • ZIPARCHIVE::ER_NOZIP

  • ZIPARCHIVE::ER_OPEN

  • ZIPARCHIVE::ER_READ

  • ZIPARCHIVE::ER_SEEK

Exemples

Cet exemple ouvre une archive ZIP, lit chaque fichier et affiche leurs contenus. L'archive test2.zip de cet exemple est une des archives contenue dans les sources de ZZIPlib.

Exemple #1 Ouverture et extraction

<?php
$zip 
= new ZipArchive;
$res $zip->open('test.zip')
if (
$res === TRUE) {
    echo 
'ok';
    
$zip->extractTo('test');
    
$zip->close();
} else {
    echo 
'échec, code:' $res;
}
?>

Exemple #2 Création d'une archive

<?php
$zip 
= new ZipArchive;
$res $zip->open('test.zip'ZipArchive::CREATE);
if (
$res === TRUE) {
    
$zip->addFromString('test.txt''file content goes here');
    
$zip->addFile('data.txt''nom_de_l_entree.txt');
    
$zip->close();
    echo 
'ok';
} else {
    echo 
'échec';
}
?>


ZipArchive::renameIndex> <ZipArchive::locateName
Last updated: Fri, 14 Nov 2008
 
add a note add a note User Contributed Notes
ZipArchive::open
azsymvelik at gmail dot com
01-Aug-2008 10:25
<?php

/*
Hi!

I made a little script about checking content and "secure repacking"
*/

$somefile = "zip.zip";
$someurl = "/some/url"
$zip = new ZipArchive;
$open = $zip->open($somefile, ZIPARCHIVE::CHECKCONS);
// If the archive is broken(or just another file renamed to *.zip) the function will return error on httpd under windows, so it's good to check if the archive is ok with ZIPARCHIVE::CHECKCONS
if ($open === TRUE) {
if(!
$zip->extractTo($someurl)) {
die (
"Error during extracting");
}
$zip->close();
}
$new_archive_name = "new.zip";
$new_zip = new ZipArchive;
$new_open = $new_zip->open($new_archive_name, ZIPARCHIVE::CREATE);
if (
$new_open === TRUE) {
$dir = opendir($someurl);
while (
$file = readdir($dir)) {
 if (
$file == "." || $file == "..") { } else {
 
//We do not wanna this files in the new zip archive
 
if (!$new_zip->addFile($file)) {
     print
$file."was not added!<br />";
   }
  }
 }
}
$new_zip->close();
?>
Jonathan Baltazar
23-Jul-2008 04:14
The file name does not need to end in '.zip' if it is created using tempnam().  You just need to overwrite the file instead of trying to read it:

<?php
$file
= tempnam("tmp", "zip");
   
$zip = new ZipArchive();

// Zip will open and overwrite the file, rather than try to read it.
$zip->open($file, ZipArchive::OVERWRITE);

$zip->close();

// Stream the file to the client
header("Content-Type: application/zip");
header("Content-Length: " . filesize($file));
header("Content-Disposition: attachment; filename=\"a_zip_file.zip\"");
readfile($file);

unlink($file);
?>
olivier pons
16-May-2008 09:26
If you try this to open a file with creation in mind (= empty zip to fill with other files), this may not work :

$res = $zip->open($zip_file, ZipArchive::CREATE);

// you may get false

Try this instead, it should work :

$res = $zip->open($zip_file, ZIPARCHIVE::OVERWRITE);
Anonymous
19-Dec-2007 03:26
It seems the filename has to end in '.zip', so this suffix must be added when using tempnam() to create a random temporary file name.
rickky at gmail dot com
02-Jul-2007 02:07
If the directory you are writing or saving into does not have the correct permissions set, you won't get any error messages and it will look like everything worked fine... except it won't have changed!

Instead make sure you collect the return value of ZipArchive::close(). If it is false... it didn't work.

ZipArchive::renameIndex> <ZipArchive::locateName
Last updated: Fri, 14 Nov 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites