Vamos a ver una manera sencilla de crear ZIPs con PHP, para ello primero necesitamos una libreria que se llama ZipFile:
Mirror # 1
Mirror # 2
luego renombramos el archivo a: zipfile.php, incluimos la libreria en nuestra carpeta de librerias (en mi caso se llama "require") y la usamos asi:<?php
require ("require/zipfile.php");
$zipfile = new zipfile();
$zipfile->add_file("res.pdf", "res.pdf");
$zipfile->add_file("tab.pdf", "tab.pdf");
$zipfile->add_file("err.pdf", "err.pdf");
$zipfile->add_file("c3d.pdf", "c3d.pdf");
$zipfile->add_file("pila.pdf", "pila.pdf");
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=archivos.zip");
echo $zipfile->file();
?>
Primero importamos la libreria "require ("require/zipfile.php");" luego instanciamos la clase "$zipfile = new zipfile();" y seguido empezamos a anadir archivos: "$zipfile->add_file("pila.pdf", "pila.pdf");", el primer parametro indica el archivo y el segundo el nombre que contendra dentro del zip, por ultimo le damos nombre con " header("Content-disposition: attachment; filename=archivos.zip");" y regresamos el zip creado con "echo $zipfile->file();".
Tambien podemos crear carpetas dentro del zip, usando el metodo "add_dir":$zipfile->add_dir("carpeta/");
$zipfile->add_file("archivo.html","carpeta/archivo.html");
Fuente: Devco.net