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);
ZipArchive::open
(No version information available, might be only in CVS)
ZipArchive::open — Ouvre une archive ZIP
Description
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::open
16-May-2008 12:26
18-Dec-2007 06: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.
02-Jul-2007 05: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.
