(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)
ZipArchive::getExternalAttributesIndex — Извлекает внешние атрибуты записи по её индексу
$index,&$opsys,&$attr,$flags = 0Извлекает внешние атрибуты записи по её индексу.
indexИндекс записи.
opsysВ случае успешного выполнения сюда записывается код операционной системы, заданный одной из констант ZipArchive::OPSYS_.
attrВ случае успешного выполнения сюда записываются внешние атрибуты. Значения зависят от операционной системы.
flags
       Если задано как ZipArchive::FL_UNCHANGED, будут возвращены
       оригинальные неизмененные атрибуты.
      
   Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
  
В этом примере метод извлекает все файлы из ZIP-архива test.zip и устанавливает им права Unix, полученные из внешних атрибутов.
Пример #1 Извлекаем все записи с их правами Unix
<?php
$zip = new ZipArchive();
if ($zip->open('test.zip') === TRUE) {
    for ($idx=0 ; $s = $zip->statIndex($idx) ; $idx++) {
        if ($zip->extractTo('.', $s['name'])) {
            if ($zip->getExternalAttributesIndex($idx, $opsys, $attr)
                && $opsys==ZipArchive::OPSYS_UNIX) {
               chmod($s['name'], ($attr >> 16) & 0777);
            }
        }
    }
    $zip->close();
    echo "готово\n";
} else {
    echo "ошибка\n";
}
?>