Learn how to extract a zip file using the PHP ZipArchive class. In the previous post, we have explained how to create ZIP file in PHP.
ZipArchive is a simple PHP utility class that provides us the functionality to create a zip file or to extract the zip file dynamically on the server.
It has a extractTo() method, which extracts the zip file contents to the specified destination. The ZipArchive class also has a lot of other methods and properties to help you get more information about the archive before extracting all its contents.
Syntax:
bool ZipArchive::extractTo(string $destination, mixed $entries);
Parameters:
destination: This parameter can be used to specify the zip file.
entries: This parameter can be used to specify a single file name that is to be extracted.
Example: Extract Zip File in PHP
Create a ExtractorZip Class
The Extractor class helps to extract zip files on the server using PHP ZipArchive.
ExtractorZip.class.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<?php /** * Class ExtractorZip */ class ExtractorZip { /** * Checks file extension and call zip extractor functions. * * @param $archive * @param $destination */ public static function extract($archive, $destination){ $ext = pathinfo($archive, PATHINFO_EXTENSION); // check file is zip or not if($ext == 'zip') { $res = self::extractZipArchive($archive, $destination); return $res; } } /** * Decompress/extract a zip archive using ZipArchive. * * @param $archive * @param $destination */ public static function extractZipArchive($archive, $destination){ // Check if webserver supports unzipping. if(!class_exists('ZipArchive')){ $GLOBALS['status'] = array('error' => 'Your PHP version does not support unzip functionality.'); return false; } $zip = new ZipArchive; // Check if archive is readable. if($zip->open($archive) === TRUE){ // Check if destination is writable if(is_writeable($destination . '/')){ $zip->extractTo($destination); $zip->close(); $GLOBALS['status'] = array('success' => 'Files extracted successfully'); return true; }else{ $GLOBALS['status'] = array('error' => 'Directory not writeable by server.'); return false; } }else{ $GLOBALS['status'] = array('error' => 'Cannot read .zip file.'); return false; } } } |
Create index.php to Extract ZIP in PHP
Use ExtractorZip class to extract zip file to the specified path using PHP.
- Include and initialize the ExtractorZip class.
- Mention the directory path of the zip file, that you want to extract.
- Mention the destination to extract the ZIP file on the server.
- Call the extractZipMethod() function of ExtractorZip class.
index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php // Include and initialize ExtractorZip class require_once 'ExtractorZip.class.php'; $extractor = new ExtractorZip; // Path of archive file $archivePath = '/path/to/archive.zip'; // Destination path $destPath = '/destination/dir/'; // Extract archive file $extract = $extractor->extractZipMethod($archivePath, $destPath); if($extract){ echo $GLOBALS['status']['success']; }else{ echo $GLOBALS['status']['error']; } |