Как я могу распаковать файл в php без использования exec('tar')
или любых других команд, используя чистый PHP?
Моя проблема заключается в следующем: У меня есть файл размером 26 МБ tar.gz, который необходимо загрузить на мой сервер и извлечь. Я попытался использовать net2ftp, чтобы извлечь его, но он не поддерживает tar.gz, разжатие после загрузки.
Я использую бесплатный веб-хост, поэтому они не допускают каких-либо команд exec()
, и они не разрешают доступ к приглашению. Так как же я буду об этом говорить?
Есть ли встроенная команда PHP?
Начиная с 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');
PEAR предоставляет класс Archive_Tar
, который поддерживает сжатие Gzip и BZ2, при условии, что вы загружаете расширения zlib и bz2 соответственно.