CakeFest 2024: The Official CakePHP Conference

PharData::extractTo

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

PharData::extractToИзвлечь содержимое tar/zip-архива в директорию

Описание

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

Извлекает все файлы tar/zip-архива на диск. Извлечённые файлы и директории сохраняют все разрешения, которые у них были. Опциональные параметры позволяют контролировать, какие именно файлы извлекать и нужно ли перезаписывать уже существующие. Второй параметр files может быть как именем файла, так и путём директории, которые надо извлекать. По умолчанию уже существующие на диске файлы перезаписываться не будут. Для указания, что нужно использовать перезапись, используется третий параметр. Этот метод аналогичен методу ZipArchive::extractTo().

Список параметров

directory

Путь, по которому необходимо сохраните извлечённые файлы (files)

files

Имя файла или директории, которые надо извлечь. Либо архив с именами файлов/директорий

overwrite

Установите в true, если необходимо перезаписывать уже существующие файлы

Возвращаемые значения

Возвращает true в случае успешного выполнения. Но лучше использовать механизм перехвата исключений для контроля успешности.

Ошибки

Выбрасывает исключение PharException в случае возникновения ошибки записи на диск.

Примеры

Пример #1 Пример использования PharData::extractTo()

<?php
try {
$phar = new PharData('myphar.tar');
$phar->extractTo('/full/path'); // извлечь все файлы
$phar->extractTo('/another/path', 'file.txt'); // извлечь только file.txt
$phar->extractTo('/this/path',
array(
'file1.txt', 'file2.txt')); // извлечь два указанных файла
$phar->extractTo('/third/path', null, true); // извлечь все файлы, использовать перезапись
} catch (Exception $e) {
// обработка ошибок
}
?>

Примечания

Замечание:

Файловые системы Windows NTFS не поддерживают некоторые символы в именах файлов, а именно <|>*?":. Имена файлов с точкой в конце также не поддерживаются. В отличие от некоторых инструментов извлечения, этот метод не поддерживает замену этих символов на подчёркивание, а вместо этого возникает ошибка при извлечении таких файлов.

Смотрите также

  • Phar::extractTo() - Извлечь содержимое phar-архива в директорию

add a note

User Contributed Notes 2 notes

up
1
njh at aelius dot com
11 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
6 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?
To Top