Tag Archives: zip in php

Create a floder zip programatically in php

If we are working on live or demo project, it’s very important to take a back up of project in every day.

Suppose we want to take a back up of server files than it will take more time to transfer all files and folder from FTP. but if create programatically zip of projects than we can easily download it.

Create a floder zip programatically, zip in php, create zip file in php, backup zip in magento, magento backup zip script


<?php 

// var_dump( extension_loaded('zip') ); // Extension Zip is loaded or not

$the_folder = '/var/www/html/BACKUP-FOLDERNAME'; // Location which we want to zip
$zip_file_name = '/var/www/html/backup.zip';  // Location where we keep zip folder 
 
$za = new FlxZipArchive;
 
$res = $za->open($zip_file_name, ZipArchive::CREATE);
 
if($res === TRUE) {
    $za->addDir($the_folder, basename($the_folder));
    $za->close();
	echo '<p>Check if the zip file is created now!</p>';
}
else{
    echo 'Could not create a zip archive';
}

class FlxZipArchive extends ZipArchive {
/**
* Add a Dir with Files and Subdirs to the archive
*
* @param string $location Real Location
* @param string $name Name in Archive
* @author Nicolas Heimann
* @access private
**/
 
public function addDir($location, $name) {
$this->addEmptyDir($name);
 
$this->addDirDo($location, $name);
} // EO addDir;
 
/**
* Add Files & Dirs to archive.
*
* @param string $location Real Location
* @param string $name Name in Archive
* @author Nicolas Heimann
* @access private
**/
 
private function addDirDo($location, $name) {
$name .= '/';
$location .= '/';
 
// Read all Files in Dir
$dir = opendir ($location);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
 
// Rekursiv, If dir: FlxZipArchive::addDir(), else ::File();
$do = (filetype( $location . $file) == 'dir') ? 'addDir' : 'addFile';
$this->$do($location . $file, $name . $file);
}
} // EO addDirDo();
}
?>