Ho scaricato da internet questa classe per creare il file zip che mi serve....

Codice PHP:
/**
 * Class to dynamically create a zip file (archive)
 *
 * @author Rochak Chauhan
 */

class createZip  {  

    public 
$compressedData = array(); 
    public 
$centralDirectory = array(); // central directory   
    
public $endOfCentralDirectory "\x50\x4b\x05\x06\x00\x00\x00\x00"//end of Central directory record
    
public $oldOffset 0;

    
/**
     * Function to create the directory where the file(s) will be unzipped
     *
     * @param $directoryName string 
     *
     */
    
    
public function addDirectory($directoryName) {
        
$directoryName str_replace("\\\\""/"$directoryName);  

        
$feedArrayRow "\x50\x4b\x03\x04";
        
$feedArrayRow .= "\x0a\x00";    
        
$feedArrayRow .= "\x00\x00";    
        
$feedArrayRow .= "\x00\x00";    
        
$feedArrayRow .= "\x00\x00\x00\x00"

        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("v"strlen($directoryName) ); 
        
$feedArrayRow .= pack("v"); 
        
$feedArrayRow .= $directoryName;  

        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 

        
$this -> compressedData[] = $feedArrayRow;
        
        
$newOffset strlen(implode(""$this->compressedData));

        
$addCentralRecord "\x50\x4b\x01\x02";
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x0a\x00";    
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x00\x00\x00\x00"
        
$addCentralRecord .= pack("V",0); 
        
$addCentralRecord .= pack("V",0); 
        
$addCentralRecord .= pack("V",0); 
        
$addCentralRecord .= pack("v"strlen($directoryName) ); 
        
$addCentralRecord .= pack("v"); 
        
$addCentralRecord .= pack("v"); 
        
$addCentralRecord .= pack("v"); 
        
$addCentralRecord .= pack("v"); 
        
$ext "\x00\x00\x10\x00";
        
$ext "\xff\xff\xff\xff";  
        
$addCentralRecord .= pack("V"16 ); 

        
$addCentralRecord .= pack("V"$this -> oldOffset ); 
        
$this -> oldOffset $newOffset;
        
//$directoryName = str_replace($archivio.'/','',$directoryName);
        
$addCentralRecord .= $directoryName;  

        
$this -> centralDirectory[] = $addCentralRecord;  
    }     
    
    
/**
     * Function to add file(s) to the specified directory in the archive 
     *
     * @param $directoryName string 
     *
     */
    
    
public function addFile($data$directoryName)   {
 
        
$directoryName str_replace("\\\\""/"$directoryName);  
    
        
$feedArrayRow "\x50\x4b\x03\x04";
        
$feedArrayRow .= "\x14\x00";    
        
$feedArrayRow .= "\x00\x00";    
        
$feedArrayRow .= "\x08\x00";    
        
$feedArrayRow .= "\x00\x00\x00\x00"

        
$uncompressedLength strlen($data);  
        
$compression crc32($data);  
        
$gzCompressedData gzcompress($data);  
        
$gzCompressedData substrsubstr($gzCompressedData0strlen($gzCompressedData) - 4), 2); 
        
$compressedLength strlen($gzCompressedData);  
        
$feedArrayRow .= pack("V",$compression); 
        
$feedArrayRow .= pack("V",$compressedLength); 
        
$feedArrayRow .= pack("V",$uncompressedLength); 
        
$feedArrayRow .= pack("v"strlen($directoryName) ); 
        
$feedArrayRow .= pack("v"); 
        
$feedArrayRow .= $directoryName;  

        
$feedArrayRow .= $gzCompressedData;  

        
$feedArrayRow .= pack("V",$compression); 
        
$feedArrayRow .= pack("V",$compressedLength); 
        
$feedArrayRow .= pack("V",$uncompressedLength); 

        
$this -> compressedData[] = $feedArrayRow;

        
$newOffset strlen(implode(""$this->compressedData));

        
$addCentralRecord "\x50\x4b\x01\x02";
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x14\x00";    
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x08\x00";    
        
$addCentralRecord .="\x00\x00\x00\x00"
        
$addCentralRecord .= pack("V",$compression); 
        
$addCentralRecord .= pack("V",$compressedLength); 
        
$addCentralRecord .= pack("V",$uncompressedLength); 
        
$addCentralRecord .= pack("v"strlen($directoryName) ); 
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("V"32 ); 

        
$addCentralRecord .= pack("V"$this -> oldOffset ); 
        
$this -> oldOffset $newOffset;

        
$addCentralRecord .= $directoryName;  

        
$this -> centralDirectory[] = $addCentralRecord;  
    }

    
/**
     * Fucntion to return the zip file
     *
     * @return zipfile (archive)
     */

    
public function getZippedfile() { 

        
$data implode(""$this -> compressedData);  
        
$controlDirectory implode(""$this -> centralDirectory);  

        return   
            
$data.  
            
$controlDirectory.  
            
$this -> endOfCentralDirectory.  
            
pack("v"sizeof($this -> centralDirectory)).     
            
pack("v"sizeof($this -> centralDirectory)).     
            
pack("V"strlen($controlDirectory)).             
            
pack("V"strlen($data)).                
            
"\x00\x00";                             
    }

    
/**
     *
     * Function to force the download of the archive as soon as it is created
     *
     * @param archiveName string - name of the created archive file
     */

    
public function forceDownload($archiveName) {
        
$headerInfo '';
         
        if(
ini_get('zlib.output_compression')) {
            
ini_set('zlib.output_compression''Off');
        }

        
// Security checks
        
if( $archiveName == "" ) {
            echo 
"<html><title>Public Photo Directory - Download </title><body>
[B]ERROR:[/B] The download file was NOT SPECIFIED.</body></html>"
;
            exit;
        } 
        elseif ( ! 
file_exists$archiveName ) ) {
            echo 
"<html><title>Public Photo Directory - Download </title><body>
[B]ERROR:[/B] File not found.</body></html>"
;
            exit;
        }

        
header("Pragma: public");
        
header("Expires: 0");
        
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
header("Cache-Control: private",false);
        
header("Content-Type: application/zip");
        
header("Content-Disposition: attachment; filename=".basename($archiveName).";" );
        
header("Content-Transfer-Encoding: binary");
        
header("Content-Length: ".filesize($archiveName));
        
readfile("$archiveName");
        
     }


l'esempio per il suo utilizzo è questo...
Codice PHP:
<?php

include_once("createZip.inc.php");
$createZip = new createZip;  

$createZip -> addDirectory("dir/");

$fileContents file_get_contents("img.jpg");  
$createZip -> addFile($fileContents"dir/img.jpg");  


$fileName "archive.zip";
$fd fopen ($fileName"wb");
$out fwrite ($fd$createZip -> getZippedfile());
fclose ($fd);

$createZip -> forceDownload($fileName);
@
unlink($fileName);
?>
...il mio problema ora è questo....la classe crea un file archive.zip nella stessa cartella in cui si trova il file PHP che richiama la classe....quindi se il mio file index.php che si trova nella root richiama la classe per creare il file compresso, questo mi crea il file archive.zip nella root....

....ora come faccio a dirgli che il file lo deve creare all'interno della cartella, ad esempio, "archivio"?????
Qualcuno sa darmi una mano??? :master: