Разрешение файла Httpd на сервере Apache - PullRequest
0 голосов
/ 21 марта 2012

Я всегда использовал следующие коды для создания папки на сервере Apache, но недавно на одном из серверов я получил ошибку отказа в разрешении.каталог для httpd это needs to have write permissions примерно так:

drwxrwxrwx   2 user     staff   512 Jan 07 12:32 uploads/

Где установлено это разрешение?У меня нет прямого доступа к серверу.Есть ли альтернатива?

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Вы никогда не захотите устанавливать разрешения, чтобы они были доступны для записи во всем мире, если вы можете избежать этого или даже для чтения в этом отношении. 0770 будет лучшим вариантом, если все еще будет немного шире. Суть в том, что рассматриваемые папки должны быть доступны для записи пользователю веб-сервера. Например, на многих веб-хостах apache будет запускаться пользователем nobody, поэтому более подходящее разрешение будет выглядеть так:

drwxrwx---   2 nobody     nobody   512 Jan 07 12:32 uploads/

Теперь существует проблема, если вы не можете получить прямой доступ к настройке разрешений самостоятельно, кроме как через PHP, потому что некоторые веб-хосты не разрешают вам запускать chmod или другие изменения разрешений или владения изнутри PHP. Тем не менее, если вы используете cPanel (и, вероятно, другие хостинговые системы делают то же самое), вы можете использовать онлайновый файловый менеджер для достижения желаемого, перейдя в соответствующий каталог и используя change permissions, расположенный в верхней части страницы. .

Итак, в конечном счете, вот что вам нужно: если вам нужно иметь возможность создавать каталог в определенном месте, вам нужно убедиться, что это место доступно для записи веб-сервером. В вашем примере это означает, что вам нужно сначала установить соответствующие разрешения для img/user, прежде чем пытаться создать img/user/$id. Это означает, что img/user либо должен иметь разрешения 0770 и должен принадлежать nobody:nobody (в этом контексте может работать пользователь или группа, вам не нужны оба), либо он должен иметь разрешения 0777 , Затем, когда вы создаете свой конкретный пользовательский каталог, вы можете сделать это так:

if(!is_dir('img/user/'.$id))
{
    mkdir('img/user/'.$id, 0770, true);
}

... потому что он уже будет принадлежать соответствующему пользователю, и у вас уже будет доступ для записи к нему просто потому, что ваш веб-сервер создал его в первую очередь.

Если вы не можете найти способ сделать это не на PHP, тогда вам нужно будет помочь вашему веб-хосту.

0 голосов
/ 21 марта 2012

PHP работает как пользователь: www-data в группе: www-data (Ubuntu) или как-то еще, в зависимости от ОС сервера.Вы можете попросить своего провайдера установить правильный доступ к картам / файлам, если вы не можете сделать это самостоятельно по FTP.

...