В интернетах полно длинных, сложных и нерабочих скриптов для распаковки 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);
?>
Последний мопед не мой, я просто разместил объяву!