Операции с файловой системой не работают из моего скрипта PHP; мне нужно что-то chmod? - PullRequest
1 голос
/ 22 января 2010

У меня возникли проблемы с разрешениями mkdir в PHP. Я пытаюсь просто переместить некоторые файлы (и создать папку для их размещения), но я получаю эту ошибку:

mkdir() [function.mkdir]: Permission denied in

На моем старом сайте мои папки были установлены на 755, и все, казалось, работало нормально. Это кажется как единственный раз, когда я могу заставить mkdir или связанные функции работать на этом сервере, когда у папок 777 в качестве режима.

Считается ли веб-браузер "Другие"? Я не чувствую, что оставлять свои папки на 777 - отличная идея, верно?

Ответы [ 4 ]

1 голос
/ 22 января 2010

Если вам нужно создать на своем сервере папки, в которые вы затем сможете писать из своего веб-браузера, вам может понадобиться как минимум 775. Обратите внимание, что это не всегда так для создания файлов. На самом деле, вы, вероятно, вообще не хотите, чтобы ваши файлы были 777.

Вы также можете использовать команды bash в коде php, если вы не хотите, чтобы ваш сервер (он же www-data) создавал каталоги, но вам все равно нужно будет установить правильные разрешения на папки, чтобы разрешить www-данные затем записать файлы в каталоги.

Проверьте свои права собственности. Вышеуказанное основано на том, что папка принадлежит какому-то пользователю, а группа принадлежит www-данным. Вы также можете попытаться установить для владельца папки значение www-data, но для этого конкретного пользователя все равно будет разрешение rwx.

Я надеюсь, что это не способ запутаться.

Команды, которые могут помочь вам узнать, кто запускает apache на вашем сервере:

#top

искать что-то вроде:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                          
20610 www-data  20   0 36772  10m 4380 S    4  0.1   0:04.03 apache2 

или

#ps aux | grep "apache"

искать что-то вроде

www-data 26898  0.0  0.0  34248  4076 ?        S    17:59   0:00 /usr/sbin/apache2 -k start
1 голос
/ 22 января 2010

Веб-браузер - это не объект, который рассматривается как «другие», а пользователь, которым запускается веб-сервер, например, httpd или apache.

Распространенным методом является сокращение файлов, чтобы установить пользователя и / или группу для пользователя веб-сервера, таким образом позволяя такие разрешения, как 755.

Пример:

chown apache:apache ./example/

1 голос
/ 22 января 2010

Это может или не может быть применимо, в зависимости от ОС, на которой вы запускаете веб-сервер, у вас могут быть другие механизмы безопасности, которые мешают тому, что вы пытаетесь сделать. Один яркий пример (который меня озадачил какое-то время) - это система безопасности SELinux. Попробуйте посмотреть, можете ли вы написать в / tmp. Если вы не можете искать другие вопросы. Как правило, взрыв 777 разрешений может привести к дырам в безопасности.

0 голосов
/ 22 января 2010

вы уверены, что проблема не в владении папками?

возможно, chown - правильная команда для решения этой проблемы

...