Как распаковать папку и удалить заархивированный оригинал?

Я создаю что-то вроде easy installer \ setupper для моей CMS. Когда пользователь загружает .zip с моей CMS и распаковывает его в какую-то папку на своем php-сервере, он видит файл - install.php и zip-папку с именем - Contents.zip. Мне нужна какая-то функция php для извлечения файлов из этого zip-файла Contents.zip. а затем удалите этот файл. (Если есть возможность, я хочу дать разные права на извлеченные оттуда файлы \ папки сразу после распаковки папки)

Как это сделать?


person Rella    schedule 10.05.2010    source источник


Ответы (1)


вы можете использовать библиотеку PHP ZipArchive для своих целей.

также может оказаться полезным пример кода из документации.

<?php

$zip = new ZipArchive();
$filename = "./test112.zip";

if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
    exit("cannot open <$filename>\n");
}

$zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt.\n");
$zip->addFile($thisdir . "/too.php","/testfromfile.php");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
?>

для изменения прав доступа к файлу вы можете использовать встроенную функцию PHP chmod.

Например

chmod("/somedir/somefile", 0600);

чтобы удалить файл, который вы можете использовать, отключите встроенную функцию php

Например,

unlink('test.html');
unlink('testdir');

Я настоятельно рекомендую вам ознакомиться с официальной документацией PHP.

person phoenix24    schedule 10.05.2010
comment
Является ли эта библиотека PHP ZipArchive частью официального php 5.2 defalt apache php? - person Rella; 10.05.2010
comment
и где вы удалите этот zip-файл? - person Rella; 10.05.2010
comment
@Ole да, ZipArchive идет с официальным дистрибутивом; однако он имеет внешнюю зависимость от zlib.net - person phoenix24; 10.05.2010
comment
так может быть, когда кто-то покупает веб-хостинг Apache у какого-либо провайдера, он не сможет использовать эту функцию? - person Rella; 11.05.2010