Я пытаюсь создать файл на своем веб-сервере с параметром, выбранным из веб-формы. Файл никогда не создается, и я продолжаю получать сообщение «Не удается открыть файл».
<?php
if(isset($_POST["style"])) {
$boots = $_POST["style"];
}
$file = "bootsstyle";
if(!file_exists($file)) {
touch($file);
chmod($file, 0777);
}
$openFile = fopen($file, "w+") or die("Can't open file");
fwrite($openFile, $boots);
fclose($openFile);
?>
Я искал интернет в течение часа и не уверен, где я иду не так. Я проверил разрешения в каталоге, и они 0777.
$boots = "your data";
$file = "bootsstyle";
if(!file_exists($file)) {
touch($file);
chmod($file, 0777);
}
$openFile = fopen($file, "w+") or die("Can't open file");
fwrite($openFile, $boots);
fclose($openFile);
$myfile=fopen($file, "r");
echo fread($myfile,filesize($file));
fclose($myfile);
Проблема в разрешениях для каталога, в котором вы пытаетесь создать файл. Каталог, в котором находится скрипт php, должен быть доступен для записи группе пользователей с именем WWW-данные. Есть два способа решить эту проблему.
Вы можете просто изменить разрешение каталога на 777. Для этого откройте терминал и перейдите в каталог, в котором находится ваш php-скрипт. Теперь выполните команду
sudo chmod 777 ./
Откройте терминал и перейдите в каталог, содержащий скрипт php. Теперь выполните команду
sudo chown www-data ./ && sudo chmod 774 ./
Вы можете узнать больше о разрешениях Linux и разнице между 774 и 777 из
https://linode.com/docs/tools-reference/linux-users-and-groups/
Замечания:
Открыв файл в режиме w +, создайте файл, если он не существует. Так что вам не нужно это трогать.Замечания:
Приведенный выше код протестирован на kali linux 2017.3.2 с запущенным сервером LAMP.