Я использую CentOS для обслуживания веб-страниц PHP.
У меня есть разные веб-сайты внутри "/ svr / www" ... Моя проблема в том, что я создал такие папки, как:
/svr/www/website1.com
/svr/www/website2.com
И у этих папок есть владелец «root», и я заметил, что apache не может создавать новые файлы внутри этих папок.
У меня есть эти ошибки в apache error.log:
[Sat Oct 22 17:50:44 2011] [error] [client xx.xxx.xxx.xxx] PHP Warning: fopen(../index.htm): failed to open stream: Permission denied in /srv/www/site1.com/public/gne/gnerate.php on line 228
[Sat Oct 22 17:50:44 2011] [error] [client xx.xxx.xxx.xxx] PHP Warning: fputs() expects parameter 1 to be resource, boolean given in /srv/www/site1.com/public/gne/gnerate.php on line 229
[Sat Oct 22 17:50:44 2011] [error] [client xx.xxx.xxx.xxx] PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /srv/www/site1.com/public/gne/gnerate.php on line 230
Мой вопрос ... Как правильно настроить разрешения в папках, которые apache должен читать, писать и выполнять?
Кое-что об этом?
Наилучшие пожелания,
Как правило, ваш сервер Apache должен иметь доступ для чтения всего, что я должен обслуживать, а права на запись должны быть строго ограничены файлами и папками, которые требуются веб-приложению для работы. У вас никогда не должно быть файлов с возможностью всемирной записи (например, 777).
Вы можете настроить его так, чтобы ваш собственный пользователь владел файлами, но группа apache была владельцем группы.
А затем предоставьте себе необходимые разрешения через пользователя и строго ограничьте веб-сервер, установив разрешения для групп.
1) Проверьте, под каким пользователем работает Apache, набрав
ps -ef | grep httpd
2) Измените разрешения для папки, в которой вы хотите, чтобы apache мог записывать (только эти папки, чтобы быть более "безопасными") 3) Все остальное может иметь любого пользователя / разрешение, которое вам нравится, важно, что пользователь apache сможет для чтения в этих каталогах (так что их должно быть не менее 755 для папок и 644 для файлов).
Apache и php запускаются как apache
пользователь. Чтобы предоставить Apache (и PHP) разрешения на чтение и запись, вы должны сначала изменить владельца файлов с помощью chown -R apache: /srv/www/*
.
Вам также следует убедиться, что вы защищаете установку PHP. Вот краткое и исчерпывающее руководство: http://www.jamescun.com/2011/10/securing-php/. Вы также можете посмотреть http://www.phpgenious.com/test/phpsecurity.pdf (PDF-файл) - немного устарел, но достаточно хорош, чтобы вы начали защищать PHP.