2011-12-13 21 views
5

Ho un file zip. Lo apro con la libreria php ZipArchive e aggiungo una directory e un file al suo interno. Quando lo estrai con l'unarchiver predefinito di ubuntu, tutto funziona come previsto. Ma quando lo estrai con qualsiasi unarchiver su OS X Snow Leopard (provato con quello predefinito, Keka e The Unarchiver) le autorizzazioni della nuova directory sono 700. Le autorizzazioni previste sono 755.Impostazione delle autorizzazioni in ZipArchive

Quindi, ecco lo zip originale:

DIRECTORY 
a.txt 
b.txt 

Ecco il mio codice:

<?php 
$file = 'example.zip'; 
$zip = new ZipArchive; 
$res = $zip->open($file, ZipArchive::CREATE); 
    if ($res === TRUE) { 

    $zip->addEmptyDir('DIRECTORY/NEW_DIR'); 
    $zip->addFromString('DIRECTORY/NEW_DIR/c.txt', 'hellooo'); 
    $zip->close(); 
    } 
    else { 
    print 'error'; 
    } 

e il risultato è:

DIRECTORY -> NEW_DIR -> c.txt 
a.txt 
b.txt 

che è corretto, ma i permessi della directory NEW_DIR sono 700 (drwx ------) invece di 755 se lo estrai sotto osx. Come sistemarlo?

Grazie!

EDIT:

Ecco lo ZipInfo sui file nel mio zip:

$ zipinfo -l test.zip 
(..) 
drwxr-xr-x 3.0 unx  0 bx  0 stor 13-Dec-11 17:43 DIRECTORY/ 
-rw-r--r-- 3.0 unx  533 tx  327 defN 3-Nov-11 01:50 a.txt 
-rw-r--r-- 3.0 unx 91669 tx 32044 defN 3-Nov-11 01:09 b.txt 
-rw----  0.0 fat  0 b-  2 defN 13-Dec-11 18:12 DIRECTORY/new_dir/ 
-rw----  0.0 fat  7 b-  9 defN 14-Dec-11 10:30 DIRECTORY/new_dir/c.txt 
+0

Interessante aggiornamento: l'origine delle tue voci è memorizzata come "Unix file system" o "Windows FAT": -? –

+0

Sto usando Snow Leopard, penso che sia hfs +. – mimrock

risposta

-1

Se si dispone dei privilegi di sicurezza necessari, si potrebbe fare qualcosa sulla falsariga di

<?php 
    exec("chmod -R 755 /directory/new_dir"); 
+0

Grazie, ma nell'applicazione effettiva lo zip non verrà estratto sul server. L'utente può scaricarlo e, se usa OSX, incontrerà il problema dell'autorizzazione sopra descritto e dovrà risolverlo manualmente, che non è facile da usare. – mimrock

Problemi correlati