Generar un fichero .zip usando PHP

Los ficheros .zip son muy comunes para permitir a los usuarios descargar varios ficheros a la vez. ¿Cómo podemos generarlos en nuestras aplicaciones?

Generar un fichero .zip usando PHP
Photo by JJ Ying / Unsplash

Los ficheros .zip son muy comunes para permitir a los usuarios descargar varios ficheros a la vez. ¿Cómo podemos generarlos en nuestras aplicaciones?

De hecho, PHP lo pone bastante fácil sin necesidad de recurrir a ningún paquete externo a través de la clase ZipArchive:

$zip = new ZipArchive();
$targetPath = __DIR__ . '/resultado.zip';

// Inicializamos el fichero en modo escritura
$zip->open($targetPath, ZipArchive::CREATE | ZipArchive::OVERWRITE);

// Añadimos los ficheros dentro del zip
// podemos hacerlo con ficheros ya existentes
$zip->addFile(__DIR__ . '/otro-fichero.pdf', 'otro-fichero.pdf');
// o añadir el contenido directamente
$zip->addFromString('user.json', json_encode($user));

// IMPORTANTE: Cerramos el fichero para liberar el lock
$zip->close();

Tras ejecutar este código, el fichero de resultado se habrá guardado en $targetPath y ya podemos hacer lo que necesitemos con él.

Si estáis interesados en los ficheros .zip, también hablo de ellos en este post:

Descargar y extraer un .zip con PHP en Laravel
Uso de la clase ZipArchive y la facade HTTP para descargar y extraer un fichero .zip desde una URL.