2016-04-21 2 views
1

Я запускаю сервер Apache на lubuntu и пытаюсь использовать php для записи текстового файла, который пользователи могут загрузить. Я изменил разрешения, как так:php-разрешения для создания файла

sudo chmod 775 /var/www -R 

Но я все еще получаю ошибку, когда я выполнить скрипт:

Предупреждение: Еореп (3): не удалось открыть поток: Разрешение отказано в /вар /www/myPage.php в строке 217 Не удалось открыть файл!

Вот код PHP:

$filename = $liste[0][0]; 

    $fh = fopen($filename, "x+") or die("Could not open file!"); 

    fwrite($fh, "foo") or die("Could not write to file"); 

    fclose($fh); 

мне нужно изменить другие разрешения делать? Или есть другой способ сделать то, что я пытаюсь сделать? Thanks

+0

пытаются проверить permision этой папки, щелкнув правой кнопкой мыши на этом. вы увидите, что разрешение на запись отсутствует/ –

+1

Каков результат 'ls -l/var/www/myPage.php'? Какому пользователю и группе принадлежит файл? – Aurel

+0

Попробуйте использовать абсолютный путь для записи в файл. [fopen-perm-denied] (http://stackoverflow.com/questions/3882244/php-fopen-permission-denied) –

ответ

3

Для записи в папку требуется, чтобы пользователь Apache имел возможность записи, чтения и выполнения привилегий в этой папке.

  1. Итак, сначала попробуйте определить имя пользователя Apache (часто www-data).

  2. Затем проверьте, является ли этот пользователь владельцем или группой, в которую вы хотите записать файлы.

  3. Предоставьте права на запись, чтение и выполнение (7) в этой папке для этого пользователя. Предоставьте всем, кому не нужно писать права на чтение и выполнение (5) в той же папке.

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

Если www-data не является ни владельцем, После этого вы можете оказаться неспособным получить доступ к веб-папке, если вы обращаетесь к серверу с пользователем, отличным от www-data и другим, чем root (например, «веб-сервер»), и этот пользователь не является ни владельцем, ни группой.

Я рекомендую:

  1. Установить владельца и группу в Apache пользователя/группы.

    chown -R www-data:www-data /var/www 
    
  2. Добавить пользователя WebEditor (или в зависимости от того используется для подключения к серверу по SSH или FTP) к группе WWW-данных.

    usermod -a -G www-data webeditor 
    
  3. Дают папки на запись, чтение и выполнение прав для владельца. Избегайте письменных привилегий для всех остальных.

    find /var/www -type d -exec chmod 755 {} \; 
    
  4. Файлы не требуют прав выполнения. Для пользователя www-данных необходимо только чтение и запись, остальным нужны только права на чтение, поэтому для наших файлов достаточно 644.

    find /var/www -type f -exec chmod 644 {} \;