Установка разрешений в ZipArchive - PullRequest
6 голосов
/ 13 декабря 2011

У меня есть Zip-файл. Я открываю его с помощью библиотеки php ZipArchive и добавляю в него каталог и файл. Когда я извлекаю его с помощью стандартного unarchiver Ubuntu, все работает, как ожидалось. Но когда я извлекаю его с любым unarchiver на OS X Snow Leopard (пробовал с по умолчанию, Keka и The Unarchiver), разрешения нового каталога равняются 700. Ожидаемые разрешения - 755.

Итак, вот оригинальный почтовый индекс:

DIRECTORY
a.txt
b.txt

Вот мой код:

<?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';
  }

И результат:

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

что правильно, но разрешения для каталога NEW_DIR составляют 700 (drwx ------) вместо 755, если я извлекаю его под osx. Как это исправить?

Спасибо!

EDIT:

Вот zip-информация о файлах в моем 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

1 Ответ

0 голосов
/ 13 декабря 2011

Если у вас есть необходимые привилегии безопасности, вы можете сделать что-то вроде

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