Не удалось открыть файл в php - PullRequest
1 голос
/ 12 апреля 2010

Код задыхается при fopen ():

<?php 
  ini_set('display_errors',1);
  error_reporting(E_ALL);
  $fp = fopen("/path/to/file/some_file.txt","a") or die("can't open file");
  fwrite($fp,"some text");
  fclose($fp);
?>

И полученная веб-страница говорит:

"Предупреждение: fopen (/path/to/file/some_file.txt) [function.fopen]: не удалось открыть поток: доступ запрещен в /var/www/html/test.php в строке 5 не могу открыть файл "

Я пытался играть с правами доступа к файлам, но безрезультатно. Я изменил пользователя / группу с chown apache:apache some_file.txt и изменил разрешения с chmod 755 some_file.txt. Вот соответствующий результат ls -l /path/to/file/:

-rwxr-xr-x 1 apache apache 0 Apr 12 04:16 some_file.txt

Ответы [ 4 ]

4 голосов
/ 12 апреля 2010

Не забывайте, что даже если Apache предоставлены разрешения на чтение файла, вы также должны предоставить Apache доступ ко ВСЕМ родительским каталогам.

/path/to/file/
/path/to
/path

всем нужно предоставить Apache как минимум разрешение «Чтение».

3 голосов
/ 12 апреля 2010

Вы уверены, что apache действительно ли пользователь запускает ваш PHP? `

И: убедитесь, что пользователь apache может достичь some_file.txt в файловой системе и что он не заблокирован некоторыми ограничениями доступа к каталогам выше some_file.txt.

2 голосов
/ 12 апреля 2010

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

ini_set('display_errors',1);
error_reporting(E_ALL);

PHP скажет вам, в чем проблема

1 голос
/ 12 апреля 2010

"a" означает, что вы хотите добавить, те же разрешения, что и для записи.

Вам нужно как минимум 666 разрешений, чтобы написать всем. Или измените владельца файла на группу серверов (www-данные в Ubuntu). И установите необходимое разрешение.

Вот Калькулятор разрешений

Если это не помогает, проверьте также safe_mode.

...