Одно из преимуществ языка PHP – быстрота начала веб-разработки. Для разработки веб-приложений на PHP требуется совсем немного подготовки: непосредственно установка самого интерпретатора, создание скриптовых файлов и запуск их с помощью встроенного в PHP сервера. В этом отношении PHP значительно превосходит многие языки для веб-разработки.
В состав PHP входит встроенный веб-сервер (Built-in Web Server) для быстрого тестирования и демонстрации приложений. Сервер запускается в окне командной строки или терминалах редакторов кода. Built-in Web Server имеет различные режимы работы. После того как сервер запущен можно любым текстовым редактором корректировать коды скриптовых файлов PHP: Блокнот, Notepad++, Visual Studio Code и др., проверяя результаты в браузере.
Встроенный сервер PHP предназначен только для быстрой помощи в разработке, тестировании приложений и демонстрации работы сайтов на локальных машинах. PHP Built-in Web Server может обслуживать несколько сайтов на разных URL одновременно.
Сервер запускается как однопоточный процесс – это значит, что скрипты выполняются последовательно и зависание одной веб-страницы блокирует работу всего сайта.
В целях безопасности и ввиду малой производительности данный сервер нельзя использовать для полнофункциональной производственной работы в общедоступных сетях.
Сервер PHP позволяет быстро создать хост из любого каталога локальной машины и файлы в таком каталоге будут обслуживаться данным сервером. По умолчанию сервер PHP настроен для работы с индексными файлами index.php и index.html. Для примера можно создать файл index.php с кодом:
<?php
echo "<h1>Привет от встроенного сервера PHP!</h1>";
Далее вызвать из текущей папки окно командной строки (для этого в адресной строке Windows-проводника набрать cmd и нажать клавишу Enter) и запустить из данного расположения сервер PHP командой: php -S 127.0.0.1:8000
После выполнения этой команды в любом браузере можно открыть индексную страницу по адресу http://127.0.0.1:8000. Можно запускать множество веб-приложений на одном номере порта в диапазоне IP-адресов 127.0.0.1 – 127.255.255.254. Либо используя один IP-адрес и множество свободных портов.
Запуск сервера для подкаталогов происходит с указанием опции -t: php -S 127.0.0.1:8000 -t каталог_1/каталог_2/каталог_N/каталог_Last/ - сервер будет обслуживать файлы последнего подкаталога - каталог_Last.
Команда запуска сервера для родительских каталогов: php -S 127.0.0.1:8000 -t ../../ - сервер будет обслуживать файлы родительского каталога на два уровня выше текущего.
Встроенный сервер PHP можно запускать не только на IP-адресе, но и конечно же на символьном имени – домене. Доменное имя должно быть зарегистрировано на локальной машине, например регистрация домена в Windows в файле C:\Windows\System32\drivers\etc\hosts.
В таком случае сервер запускается командой: php -S имя_домена:8000, например: php -S localphp:8000
Правила запуска для текущих, дочерних и родительских каталогов описанные выше действуют и в этом случае абсолютно аналогично.
Если указать файл в команде запуска сервера, например: php -S localhost:8000 router.php, то этот файл будет выполнять роль маршрутизатора. На все HTTP-запросы будет вызываться указанный файл, в том числе и на запросы статических файлов. В таком маршрутизаторе необходимо самостоятельно определять логику обработки файлов разных типов, например: html, image, txt, pdf и т.д.
Достоинство подобной маршрутизации в возможности создавать любые человеко-понятные URL. Пример кода скрипта такого маршрутизатора:
Если намечено работать с кодом в редакторе Visual Studio Code, то запуск встроенного сервера PHP можно производить во вкладке терминала. Сначала необходимо открыть в редакторе папку с файлами и в меню View->Terminal или Terminal->New Terminal вызвать вкладку терминала, в которую вводятся команды запуска сервера.
Остановка сервера производится сочетанием клавишей Ctrl+C в активированном окне командной строки (перевести на него фокус, например щелкнуть на него мышью), из которого запущен сервер. Либо можно закрыть данное окно командной строки, в этом случае сервер остановится автоматически.
Для быстрого начала тестирования ниже прикреплены скрипты PHP простейших веб-сайтов, маршрутизацией и без. Структуры сайтов практически аналогичны, например структура сайта с маршрутным файлом router.php: