Создавать доступные для записи каталоги

Для проекта я реализую систему загрузки файлов. Для каждой учетной записи пользователя я хотел бы, чтобы сценарий создавал другую подпапку. Допустим, их user_id.

Каждый раз, когда добавляется пользователь, система создает новую подпапку для его собственных загрузок. Например:

Загрузки/ - пользователь1 - пользователь2 - пользователь3

Выполнив команду mkdir('Uploads/'.$user_id, 0777); это создаст новую подпапку. Все отлично.

Однако мое приложение не может писать в эту папку. Как мне создать каталоги php с необходимыми правами доступа к файлам? Я пытался использовать chmod без успеха.


person Gilly    schedule 04.09.2012    source источник
comment
На сервере установить umask=022? даже 000?   -  person Moe Tsao    schedule 04.09.2012
comment
Я слышал, что здесь используется umask(0), но я не уверен.   -  person Waleed Khan    schedule 04.09.2012
comment
В каком режиме создаются папки? И это ваше «приложение» также работает с того же веб-сервера или что-то внешнее / не-php?   -  person Marc B    schedule 04.09.2012
comment
Приложение работает на том же веб-сервере. Я пробовал umask(0) безрезультатно.   -  person Gilly    schedule 04.09.2012


Ответы (2)


Это может помочь chmod и mkdir

$dirMode = 0777;
mkdir($directory, $dirMode, true);

// chmod the directory since it doesn't seem to work on recursive paths
chmod($directory, $dirMode);

Для mkdir режим игнорируется в Windows. и 0777 по умолчанию. а третий параметр является рекурсивным, что позволяет создавать вложенные каталоги, указанные в пути.

person ro ko    schedule 04.09.2012

иногда каталог создается с другим режимом, чем указано (0755 вместо 0777 и т. д.). чтобы решить это использование:

<?php 
$old = umask(0); 
mkdir($dir,0777); 
umask($old); 
?>
person bungdito    schedule 04.09.2012