Hoy veremos cómo comprimir archivos en PHP y asignarles una contraseña en nuestros proyectos web, también veremos el proceso inverso para extraer el contenido de un zip protegido con contraseña, ¿Te interesa poder comprimir y descomprimir desde PHP? Sigue leyendo.
En varios proyectos web he tenido la necesidad de comprimir archivos en zip.
La verdad es que hasta ahora reaccione a que no tenía contenido de este tipo en el blog.
Veremos cómo podemos comprimir uno o varios archivos en un comprimido zip desde nuestros sistemas.

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:
WebEmpresaAún mejor es que asignaremos contraseña para mayor seguridad, también veremos cómo descomprimir estos archivos generados.
Si eres desarrollador web seguro te interesará este tema así que iniciemos con el ejemplo.
Iniciaremos creando un archivo PHP y en el mismo directorio tendremos un archivo llamado anexo.pdf.
Lo primero que crearemos serán nuestras variables donde guardaremos el nombre de nuestro archivo a comprimir y el nombre del archivo del comprimido una vez terminado.
$archivo = "anexo.pdf"; $archivoComprimido = "anexo.zip";
Ahora vamos a ver el procedimiento para crear un comprimido.
Nos apoyaremos en la clase ZipArchive para crear un objeto y posteriormente crear el comprimido.
Completaremos algunas opciones entre ellas el establecer contraseña y el tipo de encriptación.
// Creamos un zip $zip = new ZipArchive(); $comprimido = __DIR__ . '/' . $archivoComprimido; if (file_exists($comprimido)) { unlink($comprimido); } $comprimidoStatus = $zip->open($comprimido, ZipArchive::CREATE); if ($comprimidoStatus !== true) { throw new RuntimeException(sprintf('Error al crear el comprimido. (Codigo de error: %s)', $comprimidoStatus)); } if (!$zip->setPassword("kratoss")) { throw new RuntimeException('Error al establecer contraseña'); } $fileName = __DIR__ . "/" . $archivo; $baseName = basename($fileName); if (!$zip->addFile($fileName, $baseName)) { throw new RuntimeException(sprintf('Error al agregar archivo: %s', $fileName)); } if (!$zip->setEncryptionName($baseName, ZipArchive::EM_AES_256)) { throw new RuntimeException(sprintf('Error al agregar encriptacion: %s', $baseName)); } $zip->close();
Una vez que cerremos el comprimido se habrá creado el zip.
Podemos ir a la carpeta y visualizarlo nosotros mismos, si lo intentas abrir seguro te pedirá la contraseña que asignaste.
Si todo va bien continuemos, ahora probablemente querrás descomprimir este archivo zip.
Una vez más nos hacemos un objeto de la clase ZipArchive.
Abrimos nuestro comprimido y mandamos la contraseña.
Especificamos donde debería extraer el contenido, en mi caso en una carpeta llamada descomprimido y cerramos.
// Descomprimimos $zip = new ZipArchive(); if ($zip->open($archivoComprimido) === true) { $zip->setPassword("kratoss"); $zip->extractTo('descomprimido/'); $zip->close(); }
Revisamos la carpeta elegida y veremos nuestro archivo PDF como nuevo.
Como puedes ver el proceso para comprimir archivos en PHP es bastante sencillo y todavía aún más el proceso para descomprimir.
Además agregamos encriptación y contraseña lo cual hace este proceso mucho más seguro.
Ahora puedes integrarlo de forma segura en tus proyectos de desarrollo web, si no te funciona crear objetos con ZipArchive revisa la versión de PHP en la que trabajas.
Si esta información sobre cómo comprimir archivos en PHP te ha sido de utilidad no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con este tema, será un placer ayudarte.
¡Hasta luego!