Веб-дизайнеры и разработчики знают, что сжатие файлов в один zip архив, необходимая мера, когда дело доходит до загрузки огромного количества файлов на сервер, что означает необходимость распаковать файл после его загрузки.

Распаковка файлов на стороне сервера при помощи нативных средств php

Программисты приходят к помощи всяческих php библиотек, размеры некоторых сопоставимы с размером самого zip архива (привет PclZip).  Ниже приведен возможно самый короткий код, который Вы можете использовать, чтобы распаковать zip файл на сервере при помощи чистого  PHP.

<?php
$zip = new ZipArchive;
$res = $zip->open('sc.zip');
if ($res === TRUE) {
  $zip->extractTo('sc/');
  $zip->close();
  echo 'ok';
} else {
  echo 'failed';
}
?>

Это очень полезно в тех случаях, когда у вас нет доступа к CPanel или другой оболочке сервера. Просто убедитесь, что каталог, в который вы хотите извлечь файлы существует и  имеет разрешение на запись, иначе возникнут проблемы при распаковке.

Простой usecase, когда я использую этот код: Когда вы качаете CMS Joomla, можно поступить двумя способами

  1. Распаковать ее у себя на компьютере и ждать пока несколько тысяч файлов загрузятся по ftp
  2. Залить на сервер этот zip файл вместе с небольшим install.php, который распакует все файлы

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

Максим
# Максим 22.08.2013 16:37
Есть простой скрипт, позволяющий автоматизировать процесс .
Nick
# Nick 04.01.2014 05:38
После распаковки этим скриптом, в файлах добавились пустые строчки между строчками.
MAKCU6OH
# MAKCU6OH 24.05.2014 19:08
Спасибо за скрипт, все отл работает
olga
# olga 12.08.2014 10:07
Класс!!! Работает как часы. Единственный нюанс - не должно быть внешней директории внутри архива. По крайней мере в моем случае. Огромное спасибо. Очень помогло.
Sfera1
# Sfera1 15.03.2015 23:26
Простите, но вы забыли указать что делать с этим кодом куда вставить, как запустить...
Leroy
# Leroy 16.03.2015 07:59
В ваш код, куда угодно. Там где надо распаковать архив
Sfera1
# Sfera1 16.03.2015 21:02
Цитирую Leroy:
В ваш код, куда угодно. Там где надо распаковать архив

нужно создать файл php и его запустить через браузер, или что значит куда угодно?, какое имя файла? об этом надо умалчивать??????
Извините это просто код и куда и что ни слова.
SergeiSpliff
# SergeiSpliff 06.09.2015 11:44
Цитирую Sfera1:
Цитирую Leroy:
В ваш код, куда угодно. Там где надо распаковать архив

нужно создать файл php и его запустить через браузер, или что значит куда угодно?, какое имя файла? об этом надо умалчивать??????
Извините это просто код и куда и что ни слова.


Полагаю Вы в программировании еще тот чайник. Данный код вставляется в файл с разширением *.php и загружается на сервер с поддержкой php. Но это элементарная наброска кода. Данный код (если есть знания) можно автоматизировать вплоть до таких вещей, что он будет сам создавать нужную директорию, сам назначать права на запись в эту директорию и выполнять сам скрипт. Или к примеру извлекать все архивы с указанной папке по шаблону: если имя архива myarchive.zip, то создавать папку myarchive_unzip/ и извлекать все туда. Вообще ограничений никаких нет, все ограничивается рамками Вашей фантазии и умениями :) Удачи!
Иван78979
# Иван78979 21.07.2018 20:40
Шикарно, спасибо!
Код автора идеален для моих задач!
Цитата:

serg
# serg 01.10.2018 17:03
Как распаковать в ту же директорию, где архив?
Дмитрий Жуков
# Дмитрий Жуков 20.12.2018 13:05
Цитирую serg:
Как распаковать в ту же директорию, где архив?

$zip->extractTo('.');