Не удается открыть файл. Какой владелец должен быть у / var / www?

#php #fopen

#php #открыть

Вопрос:

Я использую Ubuntu 11.04. У моего / var / www есть владелец и группа shin (это мое имя)

Я использовал простой fopen php

 $myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Bobby Boppern";
fwrite($fh, $stringData);
$stringData = "Tracy Tannern";
fwrite($fh, $stringData);
fclose($fh);
  

Но это выдает ошибку «не удается открыть файл».

Связано ли это с владельцем и группой каталога www? Должен ли он быть root? или www-data?

Если владельцу нечего делать, то код выдает ошибку?

Заранее спасибо.

Комментарии:

1. не могли бы вы, пожалуйста, опубликовать полную ошибку php, которую вы получаете при запуске своего кода

2. Ой, я виноват. Я только что заметил вызов die, который, конечно, останавливает выполнение кода для отображения переданного ему сообщения — поэтому мой предыдущий комментарий недействителен. @shin Вам удалось решить проблему?

Ответ №1:

Вы должны указать полный путь к fopen, а не только имя файла, и убедиться, что пользователь, выполняющий php-код, также имеет права на запись (chmod до 666).

 $myFile = "/var/www/testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
  

Ответ №2:

fopen возвращает предупреждение, если это не удается, включите отчет об ошибках, чтобы получить более подробную информацию о вашей ошибке. Добавьте следующую строку перед вашим блоком кода.

 error_reporting(-1);
  

Ответ №3:

Предполагая, что вы используете веб-сервер (например, Apache), владелец серверного процесса должен иметь разрешение на запись в файл, поскольку вы открываете в 'w' режиме. Это не обязательно должно основываться на владельце; это также может быть сделано с помощью mode. Чтобы узнать о режимах работы с файлами, выполните: man chmod .