Вы никогда не хотите, чтобы разрешения были доступны для записи в мире, если вы можете избежать этого или даже прочитать это. 0770
будет лучшим вариантом, если все еще немного шире. Главное, что указанная папка (ы) должна быть доступна для записи пользователем веб-сервера. Например, на многих хостингах апач будет запускаться пользователем nobody
, поэтому более подходящее разрешение будет выглядеть следующим образом:
drwxrwx--- 2 nobody nobody 512 Jan 07 12:32 uploads/
Теперь, есть проблема, если вы не можете получить прямой доступ для установки разрешений самостоятельно за исключением PHP, потому что некоторые веб-хосты откажутся от вашей возможности запускать chmod
или другие разрешения или модификации владения с PHP. Тем не менее, если вы используете cPanel (и, вероятно, другие хостинговые системы также это сделаете), вы можете использовать онлайновый файловый менеджер, чтобы выполнить то, что вы хотите, просмотрев соответствующий каталог и используя change permissions
, расположенный в верхней части страницы.
Итак, в конечном счете, вот что вам нужно: если вам нужно создать каталог в определенном месте, вам необходимо убедиться, что место доступно для записи веб-сервером. В вашем примере это означает, что перед созданием img/user/$id
вам необходимо установить соответствующие разрешения на img/user
. Это означает, что img/user
либо должны иметь разрешения 0770
и должны принадлежать nobody:nobody
(любой пользователь или группа будут работать в этом контексте, вам не нужны оба), или он должен иметь разрешения 0777
. Затем, когда вы создаете определенный каталог пользователя, вы можете сделать это так:
if(!is_dir('img/user/'.$id))
{
mkdir('img/user/'.$id, 0770, true);
}
... потому что это уже будет принадлежать соответствующему пользователю, и вы будете уже иметь доступ на запись к нему просто потому, что ваш webserver создал его в первую очередь.
Если вы не можете найти способ, отличный от PHP, для этого вам понадобится, чтобы помочь вашему веб-хосту.
Возможно, вы сможете установить разрешения с помощью FTP. – PeeHaa