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 — Open a ZIP file archive
Description
Opens a new zip archive for reading, writing or modifying.
Parameters
- filename
-
The file name of the ZIP archive to open.
- flags
-
The mode to use to open the archive.
-
ZIPARCHIVE::OVERWRITE
-
ZIPARCHIVE::CREATE
-
ZIPARCHIVE::EXCL
-
ZIPARCHIVE::CHECKCONS
-
Return Values
- Error codes
-
Returns TRUE on success or the error code.
-
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
-
Examples
This example opens a ZIP file archive, reads each file in the archive and prints out its contents. The test2.zip archive used in this example is one of the test archives in the ZZIPlib source distribution.
Example #1 Open and extract
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip')
if ($res === TRUE) {
echo 'ok';
$zip->extractTo('test');
$zip->close();
} else {
echo 'failed, code:' . $res;
}
?>
Example #2 Create an 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', 'entryname.txt');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>
ZipArchive::open
16-May-2008 01:26
18-Dec-2007 07: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 06: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.
