PharData::extractTo

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

PharData::extractToExtrai o conteúdo de um arquivo tar/zip para um diretório

Descrição

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

Extrai todos os arquivos de um arquivo tar/zip para o disco. Os arquivos e diretórios extraídos preservam as permissões conforme armazenadas no arquivo. Os parâmetros opcionais permitem controle opcional sobre quais arquivos são extraídos e se os arquivos existentes no disco podem ser sobrescritos. O segundo parâmetro files pode ser o nome de um arquivo ou diretório a ser extraído, ou um array de nomes de arquivos e diretórios a serem extraídos. Por padrão, este método não sobrescreve arquivos existentes; o terceiro parâmetro pode ser definido como true para habilitar a sobrescrita de arquivos. Este método é semelhante a ZipArchive::extractTo().

Parâmetros

directory

Caminho para o qual devem ser extraídos os arquivos informados em files.

files

O nome de um arquivo ou diretório a ser extraído, ou um array de arquivos/diretórios a serem extraídos.

overwrite

Defina como true para habilitar a substituição de arquivos existentes.

Valor Retornado

Retorna true em caso de sucesso, mas é melhor verificar se há exceções lançadas e assumir sucesso se nenhuma for lançada.

Erros/Exceções

Lança PharException se ocorrerem erros durante a descarga de alterações no disco.

Exemplos

Exemplo #1 Um exemplo de PharData::extractTo()

<?php
try {
$phar = new PharData('meuphar.tar');
$phar->extractTo('/caminho/completo'); // extrai todos os arquivos
$phar->extractTo('/caminho/alternativo', 'arquivo.txt'); // extrai somente arquivo.txt
$phar->extractTo('/este/caminho',
array(
'arquivo1.txt', 'arquivo2.txt')); // extrai somente 2 arquivos
$phar->extractTo('/terceiro/caminho', null, true); // extrai todos os arquivos e sobrescreve
} catch (Exception $e) {
// lida com erros
}
?>

Notas

Nota:

O sistema de arquivos NTFS do Windows não suporta alguns caracteres em nomes de arquivos, como <|>*?":. Nomes de arquivos que terminam com ponto também não são suportados. Ao contrário de algumas ferramentas de extração, este método não substitui estes caracteres por um sublinhado, mas falha ao extrair esses arquivos.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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
7 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
1
Daniel
11 months 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