Веб-дизайнеры и разработчики знают, что сжатие файлов в один 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, который распакует все файлы
Рассказать друзьям
author.jpg

Платная консультация по вопросам 1500 руб/час

Прочитали статью и остались вопросы? Меня зовут Валерий и я её автор. С радостью объясню Вам в скайпе все затруднительные моменты, которые остались за рамками статьи!

Подробнее ...

Добавить комментарий


Комментарии   

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

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

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


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

Ответить | Ответить с цитатой | Цитировать | Сообщить модератору