Разрешить веб-серверу удалять загруженные файлы, как?

Я осуществляю загрузку файлов в symfony2. Объект My File принадлежит пользователю и представляет загруженный файл. Загруженные файлы не должны быть доступны никому, кроме администраторов и владельцев. Для решения этой проблемы (кроме защиты контроллера) я сохраняю их в каталоге, который не находится в / web /. Я назвал этот каталог / private_files / (и находится в корне проекта).

Чтобы разрешить веб-серверу писать в этот каталог, я запустил это (я на Mac OS X Mavericks):

$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" private_files/

$ sudo chmod +a "www allow delete,write,append,file_inherit,directory_inherit" private_files/

Загрузка работает нормально. Однако при попытке удалить файлы через контроллер, с

unlink($path)

Я получаю сообщение об ошибке «Предупреждение: отсоединить (путь / к / файлу): Отказано в доступе».

При перечислении файлов на терминале с ls -al, Я получил

drwxr-xr-x+ 3  myuser   staff      204 Mar 23 11:59 .
drwxr-xr-x  24 myuser   staff      816 Mar 21 19:51 ..
-rw-r--r--  1  _www     wheel  7395585 Mar 23 11:59 uploaded_file_1

где я заметил, что загруженные файлы не имеют разрешения на выполнение и «+», который представляет ACL.

Как правильно разрешить удаление этих файлов методом unlink? Должны ли файлы наследовать списки ACL (и если да, то как)? Или следует применить chmod к каталогу? Большое спасибо.

0

Решение

Я думаю, это потому, что ваша папка не принадлежит пользователю apache, который обрабатывает php.

поскольку вы создали папку / private_files / с другим пользователем, а не с пользователем apache, для приложения / кеш создается программно, поэтому он владеет им и может создавать / удалять. я обновлю это как ответ

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector