Search Webmaster Help and Solution

[RESOLVED] ZipArchive function problems

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>;
  }
  */
}
?>

View Complete Thread with Replies

Related Items

Query failed: connection to localhost:3354 failed (errno=111, msg=Connection refused).