php mkdir () и проблема владения apache - PullRequest
3 голосов
/ 05 января 2012

ПРОБЛЕМА

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

mkdir($folder, 0700);

Мой скрипт создает папки, но apache является владельцем папки (и файла), поэтому я не могу получить доступ к загруженному файлу.

У меня отключен safe_mode на моем сервере. Я все еще не мог найти способ обойти это.

Я был бы рад, если бы кто-нибудь мог помочь мне с этим.

Примечание: Я пробовал 0755, 0777 ничего не меняет. Apache является владельцем созданной папки.

Ответы [ 4 ]

2 голосов
/ 05 января 2012

Я бы предложил перенастроить веб-сервер для использования suEXEC или suPHP .Недостатком этого подхода является то, что вы вынуждены использовать PHP в режиме CGI, а не в качестве мода Apache.Однако я не видел, чтобы это стало проблемой на сайтах с низким и средним трафиком.Основное преимущество заключается в том, что ваши скрипты будут работать от имени того, кто им владеет, и поэтому любые новые каталоги или файлы, создаваемые вашим скриптом, будут автоматически принадлежать указанному пользователю.1008 * с созданием новых каталогов, а не файлов, и вы не храните ничего, что не должно читаться любопытными глазами, тогда chmod($path, 0755); решит вашу проблему.

1 голос
/ 05 января 2012

Следующий фрагмент кода создает каталоги с разрешениями 777 (или с любыми указанными разрешениями):

 $oldumask = umask(0);
 mkdir($path, 0777);
 umask($oldumask);
0 голосов
/ 05 января 2012

Почему вы устанавливаете разрешения на 700 в первую очередь? 755 позволит «любому» читать ваши файлы и папки, и в большинстве случаев это действительно приемлемо.

0 голосов
/ 05 января 2012

Конечно. Каталог для загрузки должен быть other доступным для записи / доступным, то есть: xx7:

// fill APPPATH with a suitable directoy name

if ( ! file_exists(APPPATH . 'uploads'))
{
    mkdir(APPPATH . 'uploads', 0757, TRUE);
}

7: owner permissions, ie: rwx
5: group permissions, ie: rx
7: other permissions, ie: rwx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...