Проблема с правами доступа к папке PHP - PullRequest
3 голосов
/ 10 сентября 2011

Я пытаюсь создать папку, а затем другую папку в ней, используя PHP.

Если это структура каталогов, у меня есть

/home/site                           (owner : user1)

Теперь я создаю папку, используя

mkdir("/home/site/newdir",0777);     (user : apache)

Каталог / home / site / newdir создан, но пользователь этого каталога - " apache "

Сейчас делаем

mkdir("/home/site/newdir/anotherdir",0777);

не создает другой каталог внутри newdir.

Пожалуйста, помогите. Я думаю, что это вопрос владельца. Я не могу сменить владельца с помощью chmod () . Владелец остается прежним.

Что может быть причиной этого?

РЕДАКТИРОВАТЬ:

<?php
error_reporting(E_ALL);

mkdir("./m",0777);  // works
mkdir("./m/v",0777); // doesnt work

И без ошибок на странице.

var_dump(is_writeable("./m")) // returns bool(true)

РЕДАКТИРОВАТЬ: Это было исправлено. Для тех, кто может столкнуться с той же проблемой, это было из-за того, что безопасный режим PHP был включен. До сих пор не знаю причину того, что именно делает безопасный режим, который не позволяет создавать вложенные каталоги.

Но теперь это работает. Спасибо всем за чтение.

1 Ответ

1 голос
/ 12 сентября 2011

Режим в каталоге, созданном mkdir(), зависит от вашего текущего umask, поэтому chmod() не работает для вас.

Попробуйте:

$old_mask = umask(0);
mkdir("/home/site/newdir/anotherdir",0777);
umask($old_mask);
...