title: Fatal error: Class 'ZipArchive' not found (PHP 5.3.1)
body: <p>When the function below is run, I'm getting...Fatal error: Class 'ZipArchive' not found in /home/test/dummyurl.com/wp-content/themes/mytheme/upload-zip.php on line 14</p>
  
  <p>PHP Version is 5.3.1</p>
  
  <pre><code> function openZip($file_to_open) { 
    global $target;  
    $zip = new ZipArchive();  //This is line 14
    $x = $zip-&gt;open($file_to_open);  
    if($x === true) {  
     $zip-&gt;extractTo($target);  
     $zip-&gt;close();       
     unlink($file_to_open);  
    } else {  
     die("There was a problem. Please try again!");  
    }  
   }  
  </code></pre>
  
  <p>This is in a wordpress application, and I think I might perhaps be able to use a built-in function (see below) instead, but still not sure why ZipArchive class is missing above...</p>
  
  <pre><code> /**
    * Unzip's a specified ZIP file to a location on the Filesystem via the WordPress Filesystem Abstraction.
    * Assumes that WP_Filesystem() has already been called and set up. Does not extract a root-level __MACOSX directory, if present.
    *
    * Attempts to increase the PHP Memory limit to 256M before uncompressing,
    * However, The most memory required shouldn't be much larger than the Archive itself.
    *
    * @since 2.5.0
    *
    * @param string $file Full path and filename of zip archive
    * @param string $to Full path on the filesystem to extract archive to
    * @return mixed WP_Error on failure, True on success
    */
   function unzip_file($file, $to) {
    global $wp_filesystem;
  
    if ( ! $wp_filesystem || !is_object($wp_filesystem) )
     return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
  
    // Unzip can use a lot of memory, but not this much hopefully
    @ini_set('memory_limit', '256M');
  
    $needed_dirs = array();
    $to = trailingslashit($to);
  
    // Determine any parent dir's needed (of the upgrade directory)
    if ( ! $wp_filesystem-&gt;is_dir($to) ) { //Only do parents if no children exist
     $path = preg_split('![/\\\]!', untrailingslashit($to));
     for ( $i = count($path); $i &gt;= 0; $i-- ) {
      if ( empty($path[$i]) )
       continue;
  
      $dir = implode('/', array_slice($path, 0, $i+1) );
      if ( preg_match('!^[a-z]:$!i', $dir) ) // Skip it if it looks like a Windows Drive letter.
       continue;
  
      if ( ! $wp_filesystem-&gt;is_dir($dir) )
       $needed_dirs[] = $dir;
      else
       break; // A folder exists, therefor, we dont need the check the levels below this
     }
    }
  
    if ( class_exists('ZipArchive') &amp;&amp; apply_filters('unzip_file_use_ziparchive', true ) ) {
     $result = _unzip_file_ziparchive($file, $to, $needed_dirs);
     if ( true === $result ) {
      return $result;
     } elseif ( is_wp_error($result) ) {
      if ( 'incompatible_archive' != $result-&gt;get_error_code() )
       return $result;
     }
    }
    // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file.
    return _unzip_file_pclzip($file, $to, $needed_dirs);
   }
  </code></pre>