Как предоставить разрешение 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)" разрешение на чтение/выполнение файлов