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

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

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


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