it-swarm.dev

PHP Untar-gz sin exec ()?

¿Cómo descomprimiría un archivo en PHP sin el uso de exec('tar') o cualquier otro comando, usando PHP puro?

Mi problema es el siguiente; Tengo un archivo tar.gz de 26 mb que debe cargarse en mi servidor y extraerse. Intenté usar net2ftp para extraerlo, pero no admite la descompresión de tar.gz después de la carga.

Estoy usando un servidor web gratuito, por lo que no permiten ningún comando exec(), y no permiten el acceso a un indicador. Entonces, ¿cómo voy a deshacer esto?

¿PHP tiene un comando incorporado?

26
Jack Wilsdon

Desde PHP 5.3.0 no necesita usar Archive_Tar.

Hay una nueva clase para trabajar en el archivo tar: La clase PharData .

Para extraer un archivo (usando PharData::extractTo() que funciona como ZipArchive::extractTo()):

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

Y si tiene un archivo tar.gz, simplemente descomprímalo antes de extraer (usando 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');
45
j0k

PEAR proporciona el Archive_Tar class , que admite compresiones Gzip y BZ2, siempre que tenga cargadas las extensiones zlib y bz2, respectivamente.

3
netcoder