Отказано в доступе при создании нового файла

Я мог создать файл с помощью php fopen (..), когда использовал Ubuntu 12.04. Но сейчас я не могу создать файл с php, потому что я прошу Ubuntu 14.04. Я могу открыть существующий файл для чтения или записи. Но я не могу создать новый файл из-за отказа в разрешении.

fopen(../../../../../Desktop/file): failed to open stream: Permission denied in /var/www/html/createFolder.php on line 17
Cannot open file: ../../../../..//Desktop/file" error is occured.


$my_file = ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "home" . DIRECTORY_SEPARATOR . "username" . DIRECTORY_SEPARATOR . "Desktop" . DIRECTORY_SEPARATOR . "file";
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
$data = 'New data line 1';
fwrite($handle, $data);
$new_data = "\n".'New data line 2';
fwrite($handle, $new_data);
1
задан 20 June 2014 в 20:10

2 ответа

Ошибка происходит из-за проблемы полномочий.

Вы хотите создать файл в своем пользовательском каталоге Desktop.

Ваш скрипт не запускается Вашим пользователем, он выполняется пользователем apahce, который обычно является www-data. У этого пользователя, скорее всего, нет разрешения создать файлы в Вашем пользовательском корневом каталоге.

Поэтому необходимо позволить апачский пользовательский доступ для записи Настольному директору.

Примечание: Это - плохая идея, но Вы могли сделать это пара путей.

1. Добавьте апачского пользователя к своей группе пользователей.

2. Измените разрешение своего настольного каталога позволить любому писать в него (вероятно, худшая идея).

3. Добавьте себя к www-data группа и изменение владелец группы Вашей настольной папки к www-data.

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

Не связанный: Почему использование так многие ..? Просто использование и полный путь.

0
ответ дан 20 June 2014 в 20:10

Вам нужно разрешение создать файл в ../../../../../Desktop.

, поскольку код php является exucuted с апачским пользователем privaliage.

, Если Вы хотите его, необходимо проверить и измениться со следующими командами.

ls -l ../../../../../Desktop

sudo chmod 777 ../../../../../Desktop

или

sudo chown xxx ../../../../../Desktop

xxx является апачским именем пользователя.

0
ответ дан 20 June 2014 в 20:10

Другие вопросы по тегам:

Похожие вопросы: