Für ähnliche Fälle empfehle ich nach reiflicher Überlegung und zahlreichen Versuchen mit anderen libs die pclzip.lib von Vincent Blavet unter phpconcept.net.
Um die Schreibrechte zu behalten, muss bei extract() der Zusatz OPT_CHMOD eingefügt werden. Das sieht dann zB bei mir so aus:
PHP-Code:
function pclunzip($file,$src_dir,$dest_dir)
{
require_once('pclzip.lib.php');
$archive = new PclZip($src_dir."/".$file);
if($archive->extract(PCLZIP_OPT_SET_CHMOD,0777,PCLZIP_OPT_PATH, $dest_dir) == 0)
{ die("ZIP-Fehler:".$archive->errorInfo(true)); }
}
... es möge helfen.