Я мог создать файл с помощью 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);
Ошибка происходит из-за проблемы полномочий.
Вы хотите создать файл в своем пользовательском каталоге Desktop.
Ваш скрипт не запускается Вашим пользователем, он выполняется пользователем apahce, который обычно является www-data
. У этого пользователя, скорее всего, нет разрешения создать файлы в Вашем пользовательском корневом каталоге.
Поэтому необходимо позволить апачский пользовательский доступ для записи Настольному директору.
Примечание: Это - плохая идея, но Вы могли сделать это пара путей.
1. Добавьте апачского пользователя к своей группе пользователей.
2. Измените разрешение своего настольного каталога позволить любому писать в него (вероятно, худшая идея).
3. Добавьте себя к www-data
группа и изменение владелец группы Вашей настольной папки к www-data
.
Будьте осторожны с любым из этих методов, поскольку они открывают Ваш корневой каталог другим.
Не связанный: Почему использование так многие ..
? Просто использование и полный путь.
Вам нужно разрешение создать файл в ../../../../../Desktop
.
, поскольку код php является exucuted с апачским пользователем privaliage.
, Если Вы хотите его, необходимо проверить и измениться со следующими командами.
ls -l ../../../../../Desktop
sudo chmod 777 ../../../../../Desktop
или
sudo chown xxx ../../../../../Desktop
xxx является апачским именем пользователя.