PHP 8.5.0 Alpha 2 available for testing

PharData::extractTo

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::extractToExtrae el contenido de un archivo tar/zip hacia un directorio

Descripción

public PharData::extractTo(string $directory, array|string|null $files = null, bool $overwrite = false): bool

Extrae todos los ficheros de un archivo tar/zip hacia el disco. Los ficheros y directorios extraídos conservan los permisos tal como en el archivo. Los parámetros opcionales permiten un eventual control sobre qué ficheros serán extraídos y si los ficheros ya existentes en el disco pueden ser sobrescritos. El segundo parámetro files puede ser el nombre de un fichero o directorio a extraer, o un array de nombres de ficheros y directorios a extraer. Por omisión, este método no sobrescribirá ningún fichero ya existente, a menos que el tercer parámetro sea true. Este método es idéntico a ZipArchive::extractTo().

Parámetros

directory

Ruta donde los ficheros serán extraídos.

files

El nombre de un fichero o directorio a extraer, o un array de ficheros/directorios a extraer

overwrite

Pasarlo a true para activar la sobrescritura de ficheros ya existentes

Valores devueltos

Devuelve true en caso de éxito, pero es preferible verificar las excepciones lanzadas y considerar el éxito si ninguna se produce.

Errores/Excepciones

Lanza una excepción PharException si se encuentran errores al escribir los cambios en el disco.

Ejemplos

Ejemplo #1 Ejemplo con PharData::extractTo()

<?php
try {
$phar = new PharData('monphar.tar');
$phar->extractTo('/ruta/completa'); // extrae todos los ficheros
$phar->extractTo('/otra/ruta', 'fichero.txt'); // extrae solo fichero.txt
$phar->extractTo('/esta/ruta',
array(
'fichero1.txt', 'fichero2.txt')); // extrae solo 2 ficheros
$phar->extractTo('/tercera/ruta', null, true); // extrae todos los ficheros, sobrescribiendo
} catch (Exception $e) {
// se manejan los errores
}
?>

Notas

Nota:

Los sistemas de archivos NTFS de Windows no soportan ciertos caracteres en los nombres de archivo, a saber <|>*?":. Los nombres de archivo con un punto final no son soportados. A diferencia de algunas herramientas de extracción, este método no reemplaza estos caracteres con un guión bajo, sino que falla al extraer tales archivos.

Ver también

add a note

User Contributed Notes 3 notes

up
1
njh at aelius dot com
12 years ago
Note that PHAR only supports extracting the 'ustar' variant of the tar archives.

Some systems (such as older versions of Mac OS X) generate the 'pax' format by default.

See here for more information:
http://php.net/manual/pl/phar.fileformat.tar.php
up
1
Anonymous
8 years ago
I'm unable to extract the first directory from a tar archive:
the destination dir remains empty,
no error is thrown

<?php
$tar
= new \PharData('archive.tar');
if (
$tar->current()->isDir()) {
echo
'is_dir';
$dir = $tar->current()->getPathname();
$dir = basename($dir);
$tar->extractTo('destination', $dir);
}
?>

the docs hint that the second param could be a name of file OR DIR to be extracted from the archive, is that really possible?
up
0
Daniel
1 year ago
This is an example of how to decompress and unarchive a TAR.GZ file using Phar decompress() and extractTo() methods:

<?php
echo '<h1>TAR.GZ decompress</h1>';

$file_name = 'your_file.tar.gz';
$tar_file_name = str_replace('.gz', '', $file_name);
$dir_file_name = str_replace('.tar.gz', '', $file_name);

// decompress from gz and creates your_file.tar
$p = new PharData($file_name);
$p->decompress();

// unarchive from the tar to folder 'your_file'
$phar = new PharData($tar_file_name);
$phar->extractTo($dir_file_name);

echo
'<h1>DONE</h1>';
?>
To Top