Create Download and Open Zip File in PHP


This article describes a simple PHP function that can be used to create a Zip file archive with PHP. The function receives two parameters: an array with the path-name of the files to be added to the archive, and a string with the path-name of the Zip file that will be created. PHP's ZIP class provides all the functionality you need! To make the process a bit easier for you, I've coded a simple create_zip function for you to use in your projects.

  • Important: If you work on a Linux system, PHP must have CHMOD write permisions in the directory in which the Zip file archive will be created.


Code to create a Zip file


Let's see one example that shows you how to create a Zip file. Here, I have create a function that creates a Zip file.



function createZip($files, $zip_file) {

   $zip = new ZipArchive;


  if($zip->open($zip_file, ZipArchive::CREATE) === TRUE)


    foreach($files as $file)





    return true;


  else return false;


$files = array('file1.txt', 'image.jpg', 'audio.mp3');


$zip_file = '';

if(createZip($files, $zip_file))

  echo 'The '. $zip_file. ' successfully created';


  echo 'Unable to create the '. $zip_file. ' file';



zipe-create -file.jpg

If the $zip_file already exists on the server, the files will be added to that archive, also keeping the existing files in the ZIP.

  • To overwrite the Zip archive, replace CREATE with OVERWRITE .
  • If you want the Zip archive to be downloaded after it was created, use the following code.

Code to download and open a Zip file

The following is sample code to download and open a Zip file:



// here the code that adds the files in ZIP archive


header('Content-type: application/zip');

header('Content-disposition: filename="'. $zip_file. '"');

header('Content-length:'. filesize($zip_file));