Найти в Дзене
www.TechPlanet.pro

How-to Apache2+php write from form to file on Ubuntu 20.04

Краткая инструкция по созданию html form и записи данных из неё через веб сервер в файл. Предварительная подготовка. Как создать виртуальную машину с Ubuntu можете посмотреть в этом посте. Для начала обновим нашу #Ubuntu , но это делать не обязательно sudo apt update ; sudo apt upgrade -y Минимальная настройка веб сервера. Установим #Apache2 sudo apt install apache2 -y Отроем наш сайт в браузере заменив ИП 51.250.110.176 на ИП вашего сервера http://51.250.110.176.nip.io/ Установим #php sudo apt install php libapache2-mod-php -y Создадим сайт для проверки работы веб сервера sudo bash -c 'cat > /var/www/html/info.php <<EOF <?php     phpinfo(); EOF' Проверим работу php http://51.250.110.176.nip.io/info.php На странице вы должны увидеть эти строчки PHP Version 7.4.3 Удалим старую стартовую страницу sudo rm /var/www/html/index.html Мы собираемся записывать в файл, поэтому нужно дать права на запись пользователю веб сервера. Узнаем под каким пользователем работает наш apache2 ps -fC apache2
Оглавление

Краткая инструкция по созданию html form и записи данных из неё через веб сервер в файл.

Предварительная подготовка.

Как создать виртуальную машину с Ubuntu можете посмотреть в этом посте.

Для начала обновим нашу #Ubuntu , но это делать не обязательно

sudo apt update ; sudo apt upgrade -y

Минимальная настройка веб сервера.

Установим #Apache2

sudo apt install apache2 -y

Отроем наш сайт в браузере заменив ИП 51.250.110.176 на ИП вашего сервера

http://51.250.110.176.nip.io/

Установим #php

sudo apt install php libapache2-mod-php -y

Создадим сайт для проверки работы веб сервера

sudo bash -c 'cat > /var/www/html/info.php <<EOF
<?php
    phpinfo();
EOF'

Проверим работу php

http://51.250.110.176.nip.io/info.php

На странице вы должны увидеть эти строчки

PHP Version 7.4.3

Удалим старую стартовую страницу

sudo rm /var/www/html/index.html

Мы собираемся записывать в файл, поэтому нужно дать права на запись пользователю веб сервера. Узнаем под каким пользователем работает наш apache2

ps -fC apache2

Видим, что это www-data

root 20401 1 0 13:47 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 20403 20401 0 13:47 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 20404 20401 0 13:47 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 20405 20401 0 13:47 ? 00:00:00 /usr/sbin/apache2 -k start

Поменяем владельца папки сайта на пользователя www-data

sudo chown www-data /var/www/html/

Создание сайта

Добавим стартовую страницу

sudo bash -c 'cat > /var/www/html/index.php <<EOF
<form action="action.php" method="post">
    <p>
    <textarea name="mes" cols="50" rows="5" class="lnews_data"></textarea>
    </p>
    <p>
    <label>
    <input type="submit" name="submit" id="submit" value="отправить">
    </label>
    </p>
</form>
EOF'

Добавим страницу на php для записи полученных данных из форму в файл mes.txt

sudo bash -c "cat > /var/www/html/action.php <<'EOF'
<?php
if (\$_POST['']);
    \$file=fopen('mes.txt','a+');
    fputs(\$file,\$_POST['mes']);
   fclose(\$file);
    echo 'Успешно';
?>
EOF"

Впишем слова "apple, orange, tomato" в форму и нажмём отправить

http://51.250.110.176.nip.io/

Проверим, что создался файл mes.txt

ll /var/www/html/
-rw-r--r-- 1 www-data www-data 6 Apr 29 13:56 mes.txt

Посмотрим его содержимое

cat /var/www/html/mes.txt
apple, orange, tomato

Сделаем вывод данных из файла на страницу

sudo bash -c 'cat > /var/www/html/output.php <<EOF
<?php
\$handle = @fopen("mes.txt", "r");
if (\$handle) {
    while ((\$buffer = fgets(\$handle, 4096)) !== false) {
        echo \$buffer;
    }
    if (!feof(\$handle)) {
        echo "Ошибка: fgets() неожиданно потерпел неудачу\n";
    }
    fclose(\$handle);
}
?>
EOF'

Проверим вывод

http://51.250.110.176.nip.io/output.php

Удачи в работе!