Веб-дизайнеры и разработчики знают, что сжатие файлов в один zip архив, необходимая мера, когда дело доходит до загрузки огромного количества файлов на сервер, что означает необходимость распаковать файл после его загрузки.
Программисты приходят к помощи всяческих 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, можно поступить двумя способами
- Распаковать ее у себя на компьютере и ждать пока несколько тысяч файлов загрузятся по ftp
- Залить на сервер этот zip файл вместе с небольшим install.php, который распакует все файлы
Комментарии
нужно создать файл php и его запустить через браузер, или что значит куда угодно?, какое имя файла? об этом надо умалчивать??????
Извините это просто код и куда и что ни слова.
Полагаю Вы в программировании еще тот чайник. Данный код вставляется в файл с разширением *.php и загружается на сервер с поддержкой php. Но это элементарная наброска кода. Данный код (если есть знания) можно автоматизировать вплоть до таких вещей, что он будет сам создавать нужную директорию, сам назначать права на запись в эту директорию и выполнять сам скрипт. Или к примеру извлекать все архивы с указанной папке по шаблону: если имя архива myarchive.zip, то создавать папку myarchive_unzip/ и извлекать все туда. Вообще ограничений никаких нет, все ограничивается рамками Вашей фантазии и умениями :) Удачи!
Код автора идеален для моих задач!
Цитата:
$zip->extractTo('.');