Как предоставить разрешение apache для записи в домашний каталог?
Мой сервер находится в /var/www/html У меня есть php script в /var/www/html/fileio _test/io_test.php
<?php
$logging = <<< LOG
This is a test
LOG;
$testfile = fopen('/home/djameson/test.txt', 'a');
fwrite ($testfile, $logging);
fclose($testfile);
?>
Когда я пытаюсь запустить этот script, я получаю
Warning: fopen(/home/djameson/test.txt): failed to open stream: Permission denied in /var/www/html/fileio_test/io_test.php on line 7
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 8
Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 9
Как я могу позволить apache писать в мой домашний каталог? Сервер работает на Fedora 20.
Ответы
Ответ 1
Как ваш файл, находящийся в вашем домашнем каталоге, я бы предложил один из следующих способов.
-
Предоставьте разрешение 0777 на сам файл.
chmod 0777 /home/djameson/test.txt
-
Измените право собственности на пользовательские www-данные apache и дайте разрешение на запись владельца.
sudo chown www-data:www-data /home/djameson/test.txt
chmod 0744 /home/djameson/test.txt
-
Добавьте своего пользователя в группу www-data или наоборот, добавьте пользователя www-data в свою группу. И затем разрешение на запись группы.
sudo usermod -a -G www-data djameson
chmod 0764 /home/djameson/test.txt
ПРИМЕЧАНИЕ. Я предполагаю, что имя пользователя и имя Apache - это www-data и www-data соответственно. Вы должны соответствующим образом изменить свое имя пользователя/группу сервера apache.
Ответ 2
По умолчанию Apache в Ubuntu работает как www-data.
Предположим, ваша папка находится в /var/www/mysite.
Вы можете сделать это:
chown -R www-data:www-data/var/www/mysite
chmod -R og-R
/var/www/mysite
После этого www-data
(веб-сервер) будет иметь полный доступ к файлам сайта, в то время как другие пользователи, не являющиеся -R, вообще не будут иметь доступа.
Если вы хотите разрешить избранным пользователям доступ к сайту, вы можете сделать группу папок -R доступной и добавить этих пользователей в группу www-data.
Установите правильные разрешения для ваших файлов Apache
Ответ 3
Чтобы этот файл был доступен для чтения как для пользователя "djameson", так и для веб-сервера, вам нужно сделать 4 вещи:
- Добавить пользователя apache использует (www-данные в большинстве систем) в группу пользователей вашей системы. Возможно, вы захотите создать новый.
- Добавьте в эту группу пользователя "djameson".
- Измените права владельца (
chown
) файла, чтобы он принадлежал пользователю django и группе, которую вы только что создали.
- Убедитесь, что разрешения на доступ к файлам (
chmod
) разрешают доступ к чтению группы.
Ответ 4
если некоторые из ваших файлов находятся за пределами каталога www и вы хотите предоставить доступ к файлам вне среды apache, вы можете использовать chmod -R o + rx
Выше предоставило бы "другим пользователям (включая пользователя apache)" разрешение на чтение/выполнение файлов