PHP: Как распаковать .zip-архив с помощью PHP
В этом руководстве мы рассмотрим пример того, как можно распаковать .zip-архив с помощью PHP.
Ваш ZIP-архив должен находиться вместе с файлом unpack.php в одной директории
Содержимое директории:
/app/
| -> app.zip
| -> readme.txt
| -> unpack.php
Откройте файл unpack.php и добавьте в него следующий код:
<?php
// Проверяем существование файла app.zip в директории
if(!file_exists('app.zip')){
die('"app.zip" отсутствует!');
}
// Проверяем расширение файла .zip
if(!class_exists('ZipArchive')){
die('Расширение "ZipArchive" отсутствует или отключено.');
}
// Временная папка
$tmp_folder = 'tmp_app';
// Создаём директорию и устанавливаем атрибуты для папки
mkdir($tmp_folder, 0777);
// Распаковка
$zip = new ZipArchive;
$res = $zip->open('app.zip');
if ($res === TRUE) {
$zip->extractTo($tmp_folder);
$zip->close();
// Проверяем существование файла "readme.txt"
if(file_exists('readme.txt')){
unlink('readme.txt'); # Удаляем файл "readme.txt" после распаковки, если он существует
}
echo 'OK';
recurse_copy($tmp_folder, __DIR__);
delete_files($tmp_folder);
unlink($tmp_folder.'/.htaccess');
rmdir( $tmp_folder );
unlink('app.zip'); # Удаляем файл "app.zip" после распаковки
header('Location: index.php');
unlink('unpack.php'); # Удаляем файл "unpack.php" после распаковки
} else {
die('Не удалось извлечь!');
}
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
function delete_files($target) {
if(is_dir($target)){
$files = glob( $target . '*', GLOB_MARK );
foreach( $files as $file ){
delete_files( $file );
}
rmdir( $target );
} elseif(is_file($target)) {
unlink( $target );
}
}
?>
Для распаковки используйте URL: yourdomain.com/unpack.php
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.