Я пытаюсь сохранить данные, используя HTML и PHP в localhost в Ubuntu. Мои файлы HTML и PHP работают отлично, но когда я использую команды для открытия файла на локальном хосте с помощью
$myfile = fopen("testfile.txt", "w")
, он не позволяет ему его создать, но файл PHP работает и когда установлен с Команды для вывода переменных из PHP это хорошо работает.
Как разрешить PHP создавать файлы в Apache в localhost Ubuntu.
Необходимо позволить пользователю Apache (обычно www-data
) создавать файлы в том каталоге. Это может быть выполнено путем создания Apache владельцем каталога, например, если бы каталог назвали my-dir
, то Вы открыли бы терминал и выполнили бы это:
sudo chown www-data my-dir
как указано на Странице Значения по умолчанию Apache2 Ubuntu: По умолчанию, Ubuntu не предоставляет доступ через веб-браузер ни в какой файл независимо расположенных в/var/www... . Это означает, что любой каталог или файл, в который Вы хотите записать, должны находиться под/var/www. Пропущенный эта информация самостоятельно и получила мои волосы, вытягивающие некоторое время пытающийся записать в/tmp и т.д.
Если Вы хотите изменить все папки, и файлы в рамках того каталога и не только каталога, добавляют-R как так
sudo chown -R www-data my-dir
Если вы создаете файл на лету , и вы не хотите сохранять его на сервере , а вместо этого загрузите его на клиентский компьютер после запуска действия со стороны клиента, например как нажатие кнопки пользователем веб-браузера , вы можете написать код PHP следующим образом;
<?php
$dataToWriteToFile = "This Text has been saved in this Text File and Downloaded for you to View !";
$fileName = "TxtFilename.txt";
$file = fopen($fileName,"wb");
fwrite($file, $dataToWriteToFile);
fclose($file);
header('Content-Type: charset=utf-8');
header("Content-disposition: attachment; filename=$fileName");
print $dataToWriteToFile;
?>
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Он не будет работать для тем, кто намеревается записать файл на сервер для архивирования, но для всех, кто создает файл на лету, чтобы заставить своих клиентов-пользователей загружать его в свои веб-браузеры, этого может быть достаточно для этой цели.
Я собирался поговорить со своим клиентом, чтобы попросить их разрешить пользователю Apache добавить дополнительные права пользователю Apache (, как предлагается в предыдущих ответах здесь и других связанных вопросах в Интернете ), чтобы разрешить запись файлов в папку, из которой обслуживаются их серверные веб-страницы. Я почти уверен, что им было бы непросто согласиться, но, к счастью, приведенный выше код сработал для меня.