Назад | Перейти на главную страницу

Разрешить PHP записывать файл без 777

Я создаю простой веб-сайт в веб-пространстве, предоставленном моим университетом. У меня нет доступа к базе данных, поэтому я храню все данные в плоском файле. Проблема, с которой я столкнулся, связана с правами доступа к файлам. Мне нужен PHP, чтобы иметь возможность читать и записывать файл данных, но я действительно не хочу устанавливать для файла значение 777, поскольку кто-либо еще в системе может его изменить, у них уже есть доступ для чтения ко всем веб-каталогам. Есть ли у кого-нибудь идеи, как это сделать?

заранее спасибо

Вы можете использовать suPHP для выполнения этой задачи. Если вы можете его использовать, просто измените права доступа к файлу на 0700, и все будет работать так, как вы хотите.

Просто установите 0755 (или ниже), но убедитесь, что владельцем каталога является пользователь, в контексте которого запущен apache (или другой веб-сервер).

например

chown apache:apache /var/www/html

Вы можете получить информацию о пользователе, например, с помощью phpinfo ().

ОБНОВИТЬ

Если вы делитесь apache с большим количеством сайтов, вам следует разделить свой контент на Веб-каталоги для каждого пользователя

http://httpd.apache.org/docs/2.2/howto/public_html.html

Идеальная ситуация была бы, если бы файловая система на сервере поддерживала posix acls, чтобы вы могли добавить доступ на запись к определенным файлам для uid, под которым работает веб-сервер.

И у вас достаточно доступа к файловой системе (желательно через учетную запись оболочки), чтобы установить права acl.

См. Man acl для обзора и man setfacl для подробностей о том, как их установить.

Вы можете использовать команду ниже, чтобы установить разрешение на чтение / запись:

sudo chown www-data PATH

если www-data не существует, вы можете заменить его на апач: апач или Apache.