Подтвердить что ты не робот

PHP Untar-gz без exec()?

Как я могу распаковать файл в php без использования exec('tar') или любых других команд, используя чистый PHP?

Моя проблема заключается в следующем: У меня есть файл размером 26 МБ tar.gz, который необходимо загрузить на мой сервер и извлечь. Я попытался использовать net2ftp, чтобы извлечь его, но он не поддерживает tar.gz без сжатия после загрузки.

Я использую бесплатный веб-хост, поэтому они не допускают никаких команд exec(), и они не разрешают доступ к приглашению. Так как же я буду об этом говорить?

Есть ли встроенная команда PHP?

4b9b3361

Ответ 1

С PHP 5.3.0 вам не нужно использовать Archive_Tar.

Существует новый класс для работы с tar-архивом: Класс PharData.

Чтобы извлечь архив (используя PharData::extractTo(), который работает как ZipArchive::extractTo()):

try {
    $phar = new PharData('myphar.tar');
    $phar->extractTo('/full/path'); // extract all files
} catch (Exception $e) {
    // handle errors
}

И если у вас есть архив tar.gz, просто распакуйте его перед извлечением (используя PharData::decompress()):

// decompress from gz
$p = new PharData('/path/to/my.tar.gz');
$p->decompress(); // creates /path/to/my.tar

// unarchive from the tar
$phar = new PharData('/path/to/my.tar');
$phar->extractTo('/full/path');

Ответ 2

PEAR предоставляет класс Archive_Tar, который поддерживает сжатие Gzip и BZ2 при условии, что вы загрузили расширения zlib и bz2 соответственно.