Im having some difficulty with ZipArchive functions in PHP.
In this code, I am getting an error value of 1 which is, for some reason not found in the zipFileErrMsg function.
The file DOES exist in the path passed to the ZipArchive->open() function.
Im not sure what is going on as this is essentially the same code that I use in another script that works like a charm.
And another thing, I cannot run this script on WAMPServer 2.0 because the version of PHP installed doesnt have
php_zip.dll. Any ideas on how to remedy that?
Can you guys see anything I may be doing wrong?
PHP Code:
<?php
function zipFileErrMsg($errno) {
// using constant name as a string to make this function PHP4 compatible
$zipFileFunctionsErrors = array(
ZIPARCHIVE::ER_MULTIDISK => Multi-disk zip archives not supported.,
ZIPARCHIVE::ER_RENAME => Renaming temporary file failed.,
ZIPARCHIVE::ER_CLOSE => Closing zip archive failed,
ZIPARCHIVE::ER_SEEK => Seek error,
ZIPARCHIVE::ER_READ => Read error,
ZIPARCHIVE::ER_WRITE => Write error,
ZIPARCHIVE::ER_CRC => CRC error,
ZIPARCHIVE::ER_ZIPCLOSED => Containing zip archive was closed,
ZIPARCHIVE::ER_NOENT => No such file.,
ZIPARCHIVE::ER_EXISTS => File already exists,
ZIPARCHIVE::ER_OPEN => Can open file,
ZIPARCHIVE::ER_TMPOPEN => Failure to create temporary file.,
ZIPARCHIVE::ER_ZLIB => Zlib error,
ZIPARCHIVE::ER_MEMORY => Memory allocation failure,
ZIPARCHIVE::ER_CHANGED => Entry has been changed,
ZIPARCHIVE::ER_COMPNOTSUPP => Compression method not supported.,
ZIPARCHIVE::ER_EOF => Premature EOF,
ZIPARCHIVE::ER_INVAL => Invalid argument,
ZIPARCHIVE::ER_NOZIP => Not a zip archive,
ZIPARCHIVE::ER_INTERNAL => Internal error,
ZIPARCHIVE::ER_INCONS => Zip archive inconsistent,
ZIPARCHIVE::ER_REMOVE => Can remove file,
ZIPARCHIVE::ER_DELETED => Entry has been deleted,
);
$errmsg = unknown;
foreach ($zipFileFunctionsErrors as $constName => $errorMessage) {
if (defined($constName) and constant($constName) === $errno) {
return Zip File Function error: .$errorMessage;
}
}
return Zip File Function error: unknown;
}
require_once libs/Core_cron.php;
set_time_limit(0);
$user = new User;
$inv = new Inventory;
// This loads a list of records from a table into the $files array
$files = $inv->loadImportFiles();
if(count($files) <= 0)
{
echo NO FILES TO IMPORT.<br>;
exit;
}
foreach($files as $key=>$file)
{
$file_temp = $file[file_name];
$file[file_name] = file_uploads/.$file[file_name];
$path_parts = pathinfo($file[file_name]);
$user_id = $file[user_id];
if(strtolower($path_parts[extension]) == zip) {
echo PROCESSING ZIP FILE: .$file[file_name].<br>;
// this shows the correct filename and it does exist in the path.
echo FileName: .$file[file_name].<br>;
$zip = new ZipArchive();
$res = $zip->open($file[file_name]);
if (is_resource($res)) {
// Only one file in the zip
$zippedfile = $zip->statIndex(0);
$path_parts = pathinfo($zippedfile[name]);
echo UNZIPPING FILE: .$zippedfile[name].<br>;
$zip->extractTo(file_uploads/, $zippedfile[name]);
$zip->close();
// delete the zip file
unlink($file[file_name]);
// rename the file to include the user_id and date marker in the filename
$filename = file_uploads/.$user_id._.$path_parts[filename]._.date(m_d_Y)...$path_parts[extension];
rename(file_uploads/.$zippedfile[name], $filename);
// Remove the double line feeds, if any in the file
$filestr = preg_replace(`[
]+`,
, file_get_contents($filename));
$fp = fopen($filename, w+);
fwrite($fp, $filestr);
fclose($fp);
$file[file_name] = $filename;
} else {
// returning 1:Zip File Function error: unknown
die($res.:.zipFileErrMsg($res));
}
}
/* Dont want to do this until I get the file unzipped.
// import the file
if($inv->importFile($file[user_id], $file[file_name], $file[file_id], null, true))
{
echo DONE IMPORTING FILE: .$file[file_name].<br>;
}
*/
}
?>
Im having some difficulty with ZipArchive functions in PHP.
In this code, I am getting an error value of 1 which is, for some reason not found in the zipFileErrMsg function.
The file DOES exist in the path passed to the ZipArchive->open() function.
Im not sure what is going on as this is essentially the same code that I use in another script that works like a charm.
And another thing, I cannot run this script on WAMPServer 2.0 because the version of PHP installed doesnt have
php_zip.dll. Any ideas on how to remedy that?
Can you guys see anything I may be doing wrong?
PHP Code:
<?php
function zipFileErrMsg($errno) {
// using constant name as a string to make this function PHP4 compatible
$zipFileFunctionsErrors = array(
ZIPARCHIVE::ER_MULTIDISK => Multi-disk zip archives not supported.,
ZIPARCHIVE::ER_RENAME => Renaming temporary file failed.,
ZIPARCHIVE::ER_CLOSE => Closing zip archive failed,
ZIPARCHIVE::ER_SEEK => Seek error,
ZIPARCHIVE::ER_READ => Read error,
ZIPARCHIVE::ER_WRITE => Write error,
ZIPARCHIVE::ER_CRC => CRC error,
ZIPARCHIVE::ER_ZIPCLOSED => Containing zip archive was closed,
ZIPARCHIVE::ER_NOENT => No such file.,
ZIPARCHIVE::ER_EXISTS => File already exists,
ZIPARCHIVE::ER_OPEN => Can open file,
ZIPARCHIVE::ER_TMPOPEN => Failure to create temporary file.,
ZIPARCHIVE::ER_ZLIB => Zlib error,
ZIPARCHIVE::ER_MEMORY => Memory allocation failure,
ZIPARCHIVE::ER_CHANGED => Entry has been changed,
ZIPARCHIVE::ER_COMPNOTSUPP => Compression method not supported.,
ZIPARCHIVE::ER_EOF => Premature EOF,
ZIPARCHIVE::ER_INVAL => Invalid argument,
ZIPARCHIVE::ER_NOZIP => Not a zip archive,
ZIPARCHIVE::ER_INTERNAL => Internal error,
ZIPARCHIVE::ER_INCONS => Zip archive inconsistent,
ZIPARCHIVE::ER_REMOVE => Can remove file,
ZIPARCHIVE::ER_DELETED => Entry has been deleted,
);
$errmsg = unknown;
foreach ($zipFileFunctionsErrors as $constName => $errorMessage) {
if (defined($constName) and constant($constName) === $errno) {
return Zip File Function error: .$errorMessage;
}
}
return Zip File Function error: unknown;
}
require_once libs/Core_cron.php;
set_time_limit(0);
$user = new User;
$inv = new Inventory;
// This loads a list of records from a table into the $files array
$files = $inv->loadImportFiles();
if(count($files) <= 0)
{
echo NO FILES TO IMPORT.<br>;
exit;
}
foreach($files as $key=>$file)
{
$file_temp = $file[file_name];
$file[file_name] = file_uploads/.$file[file_name];
$path_parts = pathinfo($file[file_name]);
$user_id = $file[user_id];
if(strtolower($path_parts[extension]) == zip) {
echo PROCESSING ZIP FILE: .$file[file_name].<br>;
// this shows the correct filename and it does exist in the path.
echo FileName: .$file[file_name].<br>;
$zip = new ZipArchive();
$res = $zip->open($file[file_name]);
if (is_resource($res)) {
// Only one file in the zip
$zippedfile = $zip->statIndex(0);
$path_parts = pathinfo($zippedfile[name]);
echo UNZIPPING FILE: .$zippedfile[name].<br>;
$zip->extractTo(file_uploads/, $zippedfile[name]);
$zip->close();
// delete the zip file
unlink($file[file_name]);
// rename the file to include the user_id and date marker in the filename
$filename = file_uploads/.$user_id._.$path_parts[filename]._.date(m_d_Y)...$path_parts[extension];
rename(file_uploads/.$zippedfile[name], $filename);
// Remove the double line feeds, if any in the file
$filestr = preg_replace(`[
]+`,
, file_get_contents($filename));
$fp = fopen($filename, w+);
fwrite($fp, $filestr);
fclose($fp);
$file[file_name] = $filename;
} else {
// returning 1:Zip File Function error: unknown
die($res.:.zipFileErrMsg($res));
}
}
/* Dont want to do this until I get the file unzipped.
// import the file
if($inv->importFile($file[user_id], $file[file_name], $file[file_id], null, true))
{
echo DONE IMPORTING FILE: .$file[file_name].<br>;
}
*/
}
?>
|
|
Search Webmaster Help and Solution
[RESOLVED] ZipArchive function problemsRelated ItemsQuery failed: connection to localhost:3354 failed (errno=111, msg=Connection refused). |
