Распаковать zip на сервере, готовый скрипт

· На чтение уйдёт 1 минута · (182 слова)

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

Решение есть, и оно состоит всего из 1 строки;). Итак, создайте файл, например, unz.php следующего содержания:

<?php $z = new ZipArchive(); if ($z->open('arc.zip') === TRUE) { $z->extractTo('.'); echo "OK"; }?>

Предполагается, что файл называется arc.zip. Если этот способ не сработал, есть и другой способ, для другого класса PHP:

<?php
function unzip($zipfile) {
    $zip = zip_open($zipfile);
    while ($zip_entry = zip_read($zip)) {
        zip_entry_open($zip, $zip_entry);
        if (substr(zip_entry_name($zip_entry), -1) == '/') {
            $zdir = substr(zip_entry_name($zip_entry), 0, -1);
            if (file_exists($zdir)) {
                trigger_error('Directory "' . $zdir . '" exists', E_USER_ERROR);
                return false;
            }
            mkdir($zdir);
        }
        else {
            $name = zip_entry_name($zip_entry);
            if (file_exists($name)) {
                trigger_error('File "' . $name . '" exists', E_USER_ERROR);
                return false;
            }
            $fopen = fopen($name, "w");
            fwrite($fopen, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)), zip_entry_filesize($zip_entry));
        }
        zip_entry_close($zip_entry);
    }
    zip_close($zip);
    return true;
}
unzip('arc.zip);
?>

Последний мопед не мой, я просто разместил объяву!

Полезное