(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 に設定された場合、
       オリジナルの変更されなかった属性が返されます。
      
この例は、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 "Ok\n";
} else {
    echo "KO\n";
}
?>