Встроенный сервер PHP, запуск и настройка

Все исходники / Язык программирования PHP / OS Windows / Веб программирование / Веб-серверы / Встроенный сервер PHP, запуск и настройка
Оглавление:
  1. PHP built-in Web Server
  2. Предназначение PHP built-in Web Server
  3. Запуск сервера для каталогов
  4. Запуск сервера PHP на локальном домене
  5. Скрипт PHP как маршрутизатор
  6. Запуск сервера в Visual Studio Code
  7. Остановка веб-сервера PHP
  8. Исходники скриптов для тестирования запуска сервера PHP

PHP built-in Web Server

Одно из преимуществ языка PHP – быстрота начала веб-разработки. Для разработки веб-приложений на PHP требуется совсем немного подготовки: непосредственно установка самого интерпретатора, создание скриптовых файлов и запуск их с помощью встроенного в PHP сервера. В этом отношении PHP значительно превосходит многие языки для веб-разработки.

В состав PHP входит встроенный веб-сервер (Built-in Web Server) для быстрого тестирования и демонстрации приложений. Сервер запускается в окне командной строки или терминалах редакторов кода. Built-in Web Server имеет различные режимы работы. После того как сервер запущен можно любым текстовым редактором корректировать коды скриптовых файлов PHP: Блокнот, Notepad++, Visual Studio Code и др., проверяя результаты в браузере.

Предназначение PHP built-in Web Server

Встроенный сервер 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 на локальном домене

Встроенный сервер PHP можно запускать не только на IP-адресе, но и конечно же на символьном имени – домене. Доменное имя должно быть зарегистрировано на локальной машине, например регистрация домена в Windows в файле C:\Windows\System32\drivers\etc\hosts.

В таком случае сервер запускается командой:
php -S имя_домена:8000, например:
php -S localphp:8000
Правила запуска для текущих, дочерних и родительских каталогов описанные выше действуют и в этом случае абсолютно аналогично.

Скрипт PHP как маршрутизатор

Если указать файл в команде запуска сервера, например:
php -S localhost:8000 router.php, то этот файл будет выполнять роль маршрутизатора. На все HTTP-запросы будет вызываться указанный файл, в том числе и на запросы статических файлов. В таком маршрутизаторе необходимо самостоятельно определять логику обработки файлов разных типов, например: html, image, txt, pdf и т.д.

Достоинство подобной маршрутизации в возможности создавать любые человеко-понятные URL. Пример кода скрипта такого маршрутизатора:

<?php
// router.php
$request_uri = $_SERVER["REQUEST_URI"];
// --- Обработка статических файлов типа image ---

if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $request_uri)) {
	// Получение данных файла
	$path = ltrim($request_uri, '/');
	$size = filesize($path);
	// Отправка заголовков.
	header('Content-Type: image');
	header("Content-length: $size");
	// Вывод содержимого файла
	echo file_get_contents($path, true);
	return true;
}

// --- Вывод динамического контента ---
// 
echo 'URI: "' . $request_uri . '" <br><hr />';

$routes = array(
	"/" => "pages/index.php",
	"/page1" => "pages/1.php",
	"/page2" => "pages/2.php",
	"/page3" => "pages/3.php",
	"/page4" => "pages/4.php",
	"/page5" => "pages/5.php",
);

// Меню
$html = "<ul>";
foreach ($routes as $key => $value) {
	$html .= "<li><a href=\"$key\">$value</a></li>";
}
$html .= "</ul>";
echo $html;

// Маршрутизация
foreach ($routes as $key => $value) {
	if (strcasecmp($request_uri, $key) == 0) {
		include($value);
		return;
	}
}

// Запрошенная страница не существует.
include("error404.php");

Запуск сервера в Visual Studio Code

Если намечено работать с кодом в редакторе Visual Studio Code, то запуск встроенного сервера PHP можно производить во вкладке терминала. Сначала необходимо открыть в редакторе папку с файлами и в меню View->Terminal или Terminal->New Terminal вызвать вкладку терминала, в которую вводятся команды запуска сервера.

Запуск сервера PHP в терминале VS Code
Запуск сервера в терминале VS Code

Остановка веб-сервера PHP

Остановка сервера производится сочетанием клавишей Ctrl+C в активированном окне командной строки (перевести на него фокус, например щелкнуть на него мышью), из которого запущен сервер. Либо можно закрыть данное окно командной строки, в этом случае сервер остановится автоматически.

Исходники скриптов для тестирования запуска сервера PHP

Для быстрого начала тестирования ниже прикреплены скрипты PHP простейших веб-сайтов, маршрутизацией и без. Структуры сайтов практически аналогичны, например структура сайта с маршрутным файлом router.php:

    pages
        images
            4.png
            5.jpg
        1.php
        2.php
        3.php
        4.php
        5.php
    router.php
    index.php
    error404.php

Скачать исходник

Тема: «Встроенный сервер PHP, запуск и настройка» Язык программирования PHP phpserver-example-sites.zip Размер:44 КбайтЗагрузки:42