(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)
ZipArchive::getExternalAttributesIndex — Obtener los atributos externos de una entrada definida por su índice
$index,&$opsys,&$attr,$flags = 0Recuperar los atributos externos de una entrada definida por su índice.
indexEl índice de la entrada.
opsysEn caso de éxito, recibe el código del sistema operativo definido por una de las constantes ZipArchive::OPSYS_.
attrEn caso de éxito, recibe los atributos externos. El valor dependerá del sistema operativo.
flags
Si flags se establece a ZipArchive::FL_UNCHANGED, se devuelven los atributos
originales sin cambios.
Este ejemplo extrae todas las entradas de un archivo ZIP test.zip y asigna los permisos Unix tomados de los atributos externos.
Ejemplo #1 Extraer todas las entradas con permisos 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";
}
?>