(PHP 5 >= 5.6.0, PHP 7, PECL zip >= 1.12.4)
ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name
public ZipArchive::setExternalAttributesName ( string $name , int $opsys , int $attr [, int $flags ] ) : bool
Set the external attributes of an entry defined by its name.
name
Name of the entry.
opsys
The operating system code defined by one of the ZipArchive::OPSYS_ constants.
attr
The external attributes. Value depends on operating system.
flags
Optional flags. Currently unused.
 Returns true on success or false on failure. 
This example opens a ZIP file archive test.zip and add the file test.txt with its Unix rights as external attributes.
Example #1 Archive a file, with its Unix rights
<?php
$zip = new ZipArchive();
$stat = stat($filename='test.txt');
if (is_array($stat) && $zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
    $zip->addFile($filename);
    $zip->setExternalAttributesName($filename, ZipArchive::OPSYS_UNIX, $stat['mode'] << 16);
    $zip->close();
    echo "Ok\n";
} else {
    echo "KO\n";
}
?> 
    © 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
    https://www.php.net/manual/en/ziparchive.setexternalattributesname.php