Para crear los archivos vamos a usar los paquetes PEAR::Archive_Zip y PEAR::Archive_Tar. Como son paquetes PEAR, también tienes que descargarte el archivo principal PEAR.php. También te puedes descargar e instalar la librería PEAR completa, o símplemente descargarte el archivo PEAR.php. Pero como te basta con el archivo PEAR.php te recomiendo que uses esta opción, en vez de instalarte la librería completa.
Empecemos con el paquete PEAR::Archive_Zip. Es sorprendentemente fácil de usar, y sólo necesitas tres líneas para crear un nuevo archivo zip:

  1. <?php
  2.     include (‘pear/archive_zip.php’);
  3.  
  4.     // Crear la instancia de la clase Archive_Zip e introducir el nombre de nuestro archivo zip
  5.     $zipfile = New Archive_Zip(‘myzipfile.zip’);
  6.  
  7.     // Crear una lista de archivos y directorios
  8.     $list = array(‘example.txt’);
  9.  
  10.     // Crear el archivo zip
  11.     $zipfile->create($list);
  12.  
  13.     echo ‘Archivo Zip creado’;
  14.  
  15.     ?>

Vamos a analizar el ejemplo. Primero incluimos el paquete PEAR::Archive_Zip, después creamos una instancia de la clase Archive_Zip e introducimos el nombre de nuestro archivo zip que vamos a crear como primer parámetro.
Después construimos una lista de todos los archivos y directorios que deben ser incluidos en el archivo zip. En el ejemplo nos hemos limitado a incluir el archivo llamado example.txt que se encuentra en el mismo directorio que el script. Esta lista de archivos se pasa al método create() del objeto, y el archivo zip actual se crea, y estará localizado en la misma dirección que tu script.
Todo parece muy sencillo, pero existen algunas pegas. Por ejemplo, si la dirección no tiene permisos de escritura, no podremos crer el archivo zip, y en la mayoría de casos la dirección no tiene estos permisos, así que tendremos que pensar una solución.
Utilizar el directorio temporal.