Php скрипт запуск сервера

Встроенный web-сервер

Этот web-сервер был разработан для помощи в разработке. Он также может быть полезным в тестовых целях или для демонстрации приложения, запускаемого в полностью контролируемом окружении. Он не выполняет функции полноценного web-сервера и не должен использоваться во общедоступных сетях.

Начиная с версии PHP 5.4.0 модуль CLI SAPI содержит встроенный web-сервер.

Если запрос блокирующий, то PHP приложения будут приостановлены.

URI запросы обслуживаются из текущей директории, в которой был запущен PHP, если не используется опция -t для явного указания корневого документа. Если URI запроса не указывает на определенный файл, то будет возвращен либо index.php либо index.html в указанной директории. Если оба файла отсутствуют, то возвращается 404 код ответа.

Если PHP-файл указывается в командной строке, когда запускается веб-сервер, то он рассматривается как скрипт «маршрутизации». Скрипт выполняется в самом начале после каждого HTTP-запроса. Если этот скрипт возвращает FALSE , то запрашиваемый ресурс возвращается как есть. В противном случае браузеру будет возвращен вывод этого скрипта.

Стандартные MIME-типы возвращаются для файлов со следующими расширениями: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, и .zip.

История правок: Поддерживаемые MIME-типы (расширения файлов)

Версия Описание
5.5.12 .xml, .xsl, и .xsd
5.5.7 .3gp, .apk, .avi, .bmp, .csv, .doc, .docx, .flac, .gz, .gzip, .ics, .kml, .kmz, .m4a, .mp3, .mp4, .mpg, .mpeg, .mov, .odp, .ods, .odt, .oga, .pdf, .pptx, .pps, .qt, .swf, .tar, .text, .tif, .wav, .wmv, .xls, .xlsx, и .zip
5.5.5 .pdf
5.4.11 .ogg, .ogv, и .webm
5.4.4 .htm и .svg
Читайте также:  Android find location java

Пример #1 Запуск web-сервера

$ cd ~/public_html $ php -S localhost:8000
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit

После URI запросов http://localhost:8000/ и http://localhost:8000/myscript.html в консоли выведется примерно следующее:

PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read

Пример #2 Запуск с указанием корневой директории

$ cd ~/public_html $ php -S localhost:8000 -t foo/
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011 Listening on localhost:8000 Document root is /home/me/public_html/foo Press Ctrl-C to quit

Пример #3 Использование скрипта маршрутизации

В этом примере, запросы изображений будут возвращать их, но запросы HTML файлов будут возвращать «Welcome to PHP».

// router.php
if ( preg_match ( ‘/\.(?:png|jpg|jpeg|gif)$/’ , $_SERVER [ «REQUEST_URI» ])) return false ; // сервер возвращает файлы напрямую.
> else <
echo «

Welcome to PHP

» ;
>
?>

$ php -S localhost:8000 router.php

Пример #4 Проверка использования CLI web-сервера

Для совместного использования скрипта маршрутизации при разработке с CLI web-сервером и в дальнейшем с боевым web-сервером:

// router.php
if ( php_sapi_name () == ‘cli-server’ ) /* Маршрутизация с заданными правилами и выход с возвращением false */
>
/* продолжение с обычными операциями index.php */
?>

$ php -S localhost:8000 router.php

Пример #5 Поддержка неподдерживаемых типов файлов

Если вам нужно обслуживать статические ресурсы с MIME типами неподдерживаемыми CLI web-сервером:

// router.php
$path = pathinfo ( $_SERVER [ «SCRIPT_FILENAME» ]);
if ( $path [ «extension» ] == «el» ) header ( «Content-Type: text/x-script.elisp» );
readfile ( $_SERVER [ «SCRIPT_FILENAME» ]);
>
else return FALSE ;
>
?>

$ php -S localhost:8000 router.php

Пример #6 Доступ к CLI web-серверу с удаленных машин

Вы можете сделать web-сервер доступным на 8000 порту для всех сетевых интерфейсов:

Источник

Разработка сервера на php и системных скриптов

На stackoverflow очень много вопросов типа «какой сервер поставить для разработки на php». Многие советуют apache2 и nginx+php-fpm. Но сегодняшняя статья о такой возможности, как встроенный сервер php.

Встроенный сервер в php появился начиная с версии 5.4.0, и запускается командой:

$ php -S localhost:8000 index.php

-S — запустить сервер
localhost — хост(ip address) на котором будет сервер
8000 — порт сервера
index.php — файл обработки запросов

Роутинг сервера осуществляется с помощью php-файла, выполняющего данные функции, так вот, если этот файл возвращает `false`, то будет запрошен файл напрямую; если же это не так, то будет обрабатываться файл, который мы указали как роутер.

К примеру, если в файл index.php добавить следующее условие:

То при запросе файлов статики они будут отданы напрямую сервером, а любой другой запрос будет обработан через index.php…

Часть 2. Пишем системный скрипт и сервер на php

И так как же написать системный скрипт для linux? Ответ довольно прост — первым делом мы должны указать интерпретатор, который будет выполнять этот скрипт. Так как мы пишем скрипт на php, то и укажем его интерпретатором в первой строке:

Далее опишем те параметры, которые принимает скрипт из консоли:

if(isset($argv[1])) < $host = $argv[1]; >else < help(); >if(isset($argv[2])) < $port = $argv[2]; >else

Два простых if’а, которые проверяют 1 и 2 аргумент, которые будут host и port соответственно, и если это не так, то выводит функцию help().

И, наконец, дописываем инструкцию, запускающую сервер.

system(sprintf('php -S %s:%s', $host, $port));

После того как скрипт готов, изменяем его права и закидываем в папку /usr/bin/server.

$ chmod 0777 server $ sudo cp server /usr/bin/server

Ну вот и всё, теперь нам остаёться только зайти в папку с проектом и запустить сервер командой.

Для доступа к веб части сервера, вводим в адресную строку localhost:8080 и переходим.

Вывод: Встроенный сервер php предназначен только для разработки, и это намного экономичнее apache2 и nginx+php-fpm…

Источник

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

Мало кто знает, но начиная с версии 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 -t D:\Path\To\Site

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью