title: Script to download and extract zip files returns errors
body: <p>Hey everyone, I have written a script that downloads a zip file from a remote source, and then is supposed to extract the zip file to a directory. Below is the script:</p>
  
  <pre><code>    &lt;?php
          $url = "http://example.com/some_file.zip";
          download($url,'file.zip');
  
          function download($url,$file_name = NULL){
            if($file_name == NULL){ $file_name = basename($url);}
  
            $url_stuff = parse_url($url);
            $port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
  
            $fp = fsockopen($url_stuff['host'], $port);
            if(!$fp){ return false;}
  
            $query  = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
            $query .= 'Host: ' . $url_stuff['host'];
            $query .= "\n\n";
  
            fwrite($fp, $query);
  
            while ($tmp = fread($fp, 8192))   {
              $buffer .= $tmp;
            }
  
            preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
            $file_binary = substr($buffer, - $parts[1]);
            if($file_name == NULL){
              $temp = explode(".",$url);
              $file_name = $temp[count($temp)-1];
            }
            if(!file_exists("packages")){ mkdir("packages", 0755);}
            $file_open = fopen("packages/" . $file_name,'w');
            if(!$file_open){ return false;}
            fwrite($file_open,$file_binary);
  
            $zip = zip_open(realpath("packages")."/".$file_name);
            if ($zip) {
              while ($zip_entry = zip_read($zip)) {
                $fp = fopen("some_dir/".zip_entry_name($zip_entry), "w");
                if(zip_entry_open($zip, $zip_entry, "r")) {
                  $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
                  fwrite($fp,"$buf");
                  zip_entry_close($zip_entry);
                  fclose($fp);
                }
              }
              zip_close($zip);
            }
            fclose($file_open);
            return true;
          }
     ?&gt;
  </code></pre>
  
  <p>The issue that I have is that while the downloading of the remote file works flawlessly, I can't seem to extract it. The <code>zip_read()</code> and <code>zip_close()</code> return errors saying that it "expects parameter 1 to be resource, integer given...", which I have found means that the <code>zip_open()</code> was unable to extract and is returning an error code, which I have found to be "19" meaning "Zip File Function error: Not a zip archive". However, I know the file I am downloading is, in fact, a zip file. Can anyone explain this odd behavior and provide a fix? It would be much appreciated!</p>