Как работает PHP?
Для начала, для запуска PHP вы не можете просто так открыть в браузере файл
с расширением file.php и увидеть результат работы (вам потребуется
интерпретатор PHP).
Многие при этом ошибочно полагают что для работы PHP требуется сервер (Apache, nginx, проч.) и БД (MySQL, PostgreSQL, SQLite, проч.).
Чтобы понять в целом почему это не так следует понять как именно работает PHP.
Ввод и вывод
Основой любой программы (не только на PHP) является ввод и вывод. Для начала, вам потребуются знания только о выводе.
Note Для полноты информации, всего потоков данных у каждой программы три, больше чем просто "ввод" и "вывод":
STDIN- Данные на вход.
STDOUT- Данные на выход.
STDERR- Ошибки. Обычно они отправляются туда же, куда и вывод, но это > можно изменить.
Для того, чтобы просто что-то вывести вам достаточно написать простую программу:
<?php
echo 'Hello World!';
Вывод в терминал
Для вывода результата выполнения этой программы в терминал (консоль) достаточно
будет написать в терминале (где file.php - это название файла с программой
выше) команду ниже и нажать Enter:
php file.php
Note Для открытия окна терминала следует щёлкнуть правой кнопкой мыши по свободному месту в проводнике и затем по пункту меню "Открыть в Терминале"
Сразу после запуска программы вы получите результат её выполнения, в терминал
(т.е. в поток вывода) будет выведена фраза Hello World:

Вывод в браузер
Всё тоже самое мы можем сделать не только в терминале! Теперь наша задача вывести результат выполнения программы в браузер.
Если мы просто откроем файл браузером, что ничего работать не будет, мы увидим там исходный код программы, а не результат её выполнения. Чтобы программа автоматически выполнялась при открытии страницы существуют несколько видов программ. Здесь и далее мы будем называть их "сервером".
Note Это не совсем так, так как в общем понимании задачи HTTP-сервера ограничены тем, чтобы корректно обработать HTTP запрос от браузера и передать его обработчику. Таким обработчиком может быть ещё одна внешняя программа, например
php-fpm(PHP FCGI Process Manager или менеджер процессов PHP), а может быть дополнение/модуль для самого сервера, вродеmod_phpдля сервераApache.Так как настройка всей этой связки требует определённых знаний, то существуют специальные "сборки", где всё это собрано и сконфигурировано за вас, например Open Server, WAMP и множество других.
Warning Пожалуйста, если вы уже знакомы с работой PHP и используете Denwer, то удалите и забудьте о нём. Последняя версия этой программы вышла в 2013ом году, а это почти 10 лет назад и устарела примерно так же, как ламповые телевизоры и CD-приводы в компьтере.
Для того, чтобы запустить сервер для разработки можно воспользоваться уже знакомым способом. Открыть терминал и набрать следующую команду:
php -S 127.0.0.1:80
После того, как вы нажмёте Enter, то вы увидите примерно следующий результат:
E:\Projects\test>php -S 127.0.0.1:80
[Mon Jan 16 14:27:04 2023] PHP 8.2.1 Development Server (http://127.0.0.1:80) started
Note Флаг
-Sозначает, что нам следует запустить сервер PHP. Значение127.0.0.1указывает IP-адрес нашего сервера (127.0.0.1является псевдонимом дляlocalhost), а значение80указывает на порт сервера (80является зарегестрированным портом для протоколаhttp. А дляhttps, например, используется порт443).
Note Подробнее о работе встроенного сервера можно прочитать в официальной документации.
Эта информация означает, что наш сервер запустился и работает. Теперь вы можете
открыть браузер и ввести туда адрес http://localhost/test.php (или
http://127.0.0.1:80/test.php, что означает одно и тоже).
В результате вы увидите всё ровно тоже самое, что и ранее видели в терминале:

Итоги
В результате, классическая схема работы PHP следующая:
- 
Пользователь -> Браузер: Пользователь заходит на сайт в браузере.
- 
Браузер -> Сервер: Браузер отправляет HTTP-запрос на сервер.
- 
Сервер -> PHP: Сервер обрабатывает запрос и передаёт его на выполнение в программу на PHP.
- 
PHP -> Результат: PHP выполняет код и выводит результат работы.
Ну и результат работы по такому же прнципу попадает обратно к пользователю:
- 
Результат -> Сервер: PHP отправляет результат работы обратно серверу.
- 
Сервер -> Браузер: Сервер формирует HTTP-ответ и отправляет его в браузер.
- 
Браузер -> Пользователь: Браузер получает ответ и обрабатывает его (например, рисует красивую страничку из переданного HTML).
Если вы вдумчиво прочитали и осознали этот список выше, то вы сразу же получите ответ на на главный вопрос жизни, вселенной и всего такого: Когда пользователь получил красивую страничу - PHP уже завершил свою работу и отдал этот самый результат.
А это значит, что:
- PHP не может получить информацию о том, где находится курсор мыши.
- PHP не может получить информацию о том, какой размер окна в браузере у пользователя.
- PHP не может работать в браузере с событиями нажатия кнопок на клавиатуре.
- ...и так далее.
Когда интерфейс HTML страницы уже нарисовался - PHP уже выполнил свою работу и "нарисовал" этот интерфейс, дальше работает уже браузер. Всё дальнейшее взаимодействие с пользователем (например события) уже происходят именно в нём.
Если же вам всё же требуется как-то обработать событие, например форму "логина" - следует отправить новый запрос с данными о логине, чтобы PHP сформировал новый ответ.
 
        