(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::extractTo — Извлекает содержимое архива
Извлечение всего архива или его части в указанное место назначения.
Разрешения по умолчанию для извлечённых файлов и каталогов дают максимально широкий доступ. Это можно ограничить, установив текущую маску разрешений umask функцией umask().
По соображениям безопасности исходные разрешения не восстанавливаются. Примеры того, как их восстановить, показаны на странице с описанием метода ZipArchive::getExternalAttributesIndex().
pathto
Директория, в которую нужно извлекать файлы.
files
Элементы для извлечения. Может принимать как одно значение, так и массив записей.
Функция возвращает true
, если выполнилась успешно, или false
, если возникла ошибка.
Пример #1 Извлечь всё содержимое
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
$zip->extractTo('/my/destination/dir/');
$zip->close();
echo 'готово';
} else {
echo 'ошибка';
}
?>
Пример #2 Извлечь два элемента
<?php
$zip = new ZipArchive;
$res = $zip->open('test_im.zip');
if ($res === TRUE) {
$zip->extractTo('/my/destination/dir/', array('pear_item.gif', 'testfromfile.php'));
$zip->close();
echo 'готово';
} else {
echo 'ошибка';
}
?>
Замечание:
Файловые системы Windows NTFS не поддерживают некоторые символы в именах файлов —
<|>*?":
. Имена файлов с точкой в конце также не поддерживаются. В отличие от ряда инструментов извлечения, метод не поддерживает замену этих символов на подчёркивание, а вместо этого возникает ошибка при извлечении таких файлов.