Практические решения

PHP: встроенный web-сервер

Joomla

Введение

Мало кто знает, но начиная с версии PHP 5.4 этот язык программирования имеет встроенный web-сервер. В этой статье мы рассмотрим его запуск и использование в ОС Windows.

Если у вас не настроен обработчик PHP в системе:

  1. Скачиваем с официального сайта нужную нам версию: http://windows.php.net/download/
  2. Распаковываем в удобную директорию (у меня это D:\PHP)
  3. Кликаем на кнопке «мой компьютер» правой кнопкой мыши – выбираем «свойства» - «дополнительные параметры системы» - «дополнительно» - «переменные среды» - переменная «path»
  4. В значениях этой переменной перечислены пути разделенные ; - добавляем путь к папке с нашим PHP.
  5. Поздравляю! Теперь в вашей командной строке windows доступна команда php.

Запуск и настройка сервера

Теперь пришло время запустить сервер. Для этого откроем терминал и перейдем в папку с сайтом. После чего вызовем команду

php -S localhost:80

либо можно использовать такую команду:

php -S localhost:80 -t D:\Path\To\Site

В данном примере флаг -t используется для указания пути к папке с исполняемыми скриптами PHP.

Вместо пути к папке – можно указать путь к исполняемому php файлу. Такой файл будет являться маршрутизатором приложения. Причем если скрипт возвращает false – то запрашиваем url будет обрабатываться сервером или вернет 404 ошибку, иначе, если скрипт возвращает что-то еще, то он передается клиенту.

флаг -S указывает на то, что нужно запустить php сервер по адресу localhost на 80 порте.

Вместо localhost можно также указать любой IP адрес по которому будет доступен сайт. Это особенно удобно, если вы используете локальную сеть.
Если вместо IP указать 0.0.0.0 – то сервер будет доступен на любом интерфейсе машине.

Иногда приложению необходимо указать специфичные настройки php.ini. Для этого предусмотрен флаг -c, позволяющий явно указать путь к такому файлу настроек.

php -S localhost:80 -c path/to/php.ini

Хорошим примером, в таких случаях, является хранить php.ini в корневой директории вашего приложения. Это может облегчить доступ к настройкам для других разработчиков, если вы работаете в команде и используете общий (сетевой) доступ к приложению. Также это позволяет выгружать файл настроек в систему контроля версий.

Еще одной отличительной особенностью встроенного сервера является отсутствие поддержки .htaccess – это может сказаться критично на приложениях, используемых фронт-контроллер. В связи с этим сервер поддерживает установку сценариев маршрутизации.
php -S localhost:80 router.php

Сценарий маршрутизации будет запускаться перед каждым HTTP-запросом.

Стоит подметить, что после запуска сервера каждый HTTP запрос отображается в терминале. Благодаря этому можно, например, заметить когда сайт вернет 400 или 500 ошибку. Вообще терминал при включенном web-сервере выполняют функцию онлайн-мониторинга состояний приложения.

Михаил Мозгов
Привет! Меня зовут Михаил. В 2007 году познакомился с Joomla! на уровне использования готовых решений + HTML и CSS. С 2012 года начал изучать PHP + SQL и JS. В 2013-2014 годах открыл для себя сайт CMSCafe. Здесь я почерпнул много интересного и познавательного материала, за что отдельное спасибо Евгению и Дмитрию. В настоящее время работаю начальником IT отдела в компании Tutmee Int.
timeweb

Заработок в сети

  • Sape - биржа ссылок