Как запустить php на локальном сервере
Перейти к содержимому

Как запустить php на локальном сервере

  • автор:

PHP. Запуск встроенного веб сервера

Начиная с версии 5.4.0 — PHP содержит встроенный веб сервер, который можно запустить одной командой.

Данный вер сервер был создан для помощи в разработке, когда нужно что-то быстро проверить, разработать или продемонстрировать.
По этому не рекомендуется его использовать для полноценного веб сервера или на реальных, общедоступных проектах.
Так-же это может понадобиться, когда очень нужно запустить проект, но не хочется для этого устанавливать веб сервера apache, nginx или встроенные сборки серверов, такие как: xampp, openserver, mamp, lamp, vartigo и др.

Для запуска встроенного веб сервера необходимо перейти в папку с разрабатываемым приложением:

И выполнить команду:

Где localhost — хост запускаемого сервера.
8000 — Порт запускаемого вер сервера.

Так-же сервер можно запустить из любой директории. Для этого достаточно указать путь корневой директории.

Как запустить php на локальном сервере

This web server is designed to aid application development. It may also be useful for testing purposes or for application demonstrations that are run in controlled environments. It is not intended to be a full-featured web server. It should not be used on a public network.

The web server runs only one single-threaded process, so PHP applications will stall if a request is blocked.

URI requests are served from the current working directory where PHP was started, unless the -t option is used to specify an explicit document root. If a URI request does not specify a file, then either index.php or index.html in the given directory are returned. If neither file exists, the lookup for index.php and index.html will be continued in the parent directory and so on until one is found or the document root has been reached. If an index.php or index.html is found, it is returned and $_SERVER['PATH_INFO'] is set to the trailing part of the URI. Otherwise a 404 response code is returned.

If a PHP file is given on the command line when the web server is started it is treated as a "router" script. The script is run at the start of each HTTP request. If this script returns false , then the requested resource is returned as-is. Otherwise the script's output is returned to the browser.

Standard MIME types are returned for files with extensions: .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, and .zip.

Changelog: Supported MIME Types (file extensions)

Version Description
5.5.12 .xml, .xsl, and .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, and .zip
5.5.5 .pdf
5.4.11 .ogg, .ogv, and .webm
5.4.4 .htm and .svg
Changelog

Version Description
7.4.0 You can configure the built-in webserver to fork multiple workers in order to test code that requires multiple concurrent requests to the built-in webserver. Set the PHP_CLI_SERVER_WORKERS environment variable to the number of desired workers before starting the server. This is not supported on Windows.

This experimental feature is not intended for production usage. Generally, the built-in Web Server is not intended for production usage.

Используем встроенный в PHP сервер

Используем встроенный в PHP сервер

При разработке сайтов на локальной машине мы обычно используем либо Denwer, либо OpenServer либо еще какой-то пакет разработчика сайтов. Но начиная с версии 5.4 в PHP есть встроенный веб-сервер. Он может быть запущен через командную строку в Windows, Mac или Linux. Для этого необходимо выполнить команду cd для перехода в директорию, в которой находятся файлы проекта и запустить в этой директории встроенный PHP сервер:

C:\> php –S localhost:8080

Эта команда запустит в консоли веб-сервер, который будет доступен в браузере по соответствующему адресу на порту 8080. Сервер может быть остановлен нажатием клавиш Ctrl-C. Корневой директорией в данном случае будет текущая папка:

PHP 7.1.1 Development Server started at Mon Dec 17 11:56:05 2018
Listening on localhost:8080
Document root is C:\Sites\myrusakov.lc

Press Ctrl-C to quit

Открыть сайт в браузере теперь можно по адресу http://localhost:8080. В случае, если вы явным образом не обращаетесь к какому-либо конкретному файлу, то сервер вернет по умолчанию либо index.php либо index.html из коневой директории проекта. Все запросы к адресам логируются в консоли, в которую иногда полезно заглядывать в случае возникновения ошибок.

Если же вам необходимо, чтобы локальный сайт был доступен в локальной сети, то вместо адреса localhost, необходимо сделать следующее:

C:\> php –S 0.0.0.0:8080

Далее, нужно узнать ip адрес локального компьютера, например набрав в консоли следующую команду:

В категории адаптера в графе IPv4 и будет искомый адрес. Теперь к сайту или веб-приложению на вашей машине можно подключиться с другого компьютера или даже смартфона (по Wi-Fi) по тому адресу, который вы нашли выше, примерно так (не забудьте обязательно указать номер порта ):

http://X.X.X.X:8080 , где X.X.X.X – это адрес IPv4

Таким образом, встроенный в PHP сервер позволяет быстро развернуть и протестировать свое приложение.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 1 ):

Встроенный веб-сервер PHP https://batas.kz/phpserver/

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Использование преимуществ встроенного PHP сервера

Итак, для использования сервера нам необходим php 5.4 или выше. Для проверки версии PHP, выполните:

Так же вы можете определить доступен ли сервер в вашей сборке выполнив:

и найдите там описание параметров "-S" и "-t", которые используются только для сервера.
Для проверки сервера вы можете создать в текущей директории файл index.php, который будет содержать в себе вызов функции phpinfo() и затем запустить сервер:

И теперь вы можете увидеть содержимое отданной встроенным web-сервером:
image
В консоль же будет писаться каждый запрос клиента:

Возвращаясь назад, разберем параметр командной строки "-S", который используется для указания адреса, с которого сервер будет доступен. Возможные значения:
localhost — сервер будет доступен только с локальной машины,
0.0.0.0 — на любому интерфейсе машины,
Любой внешний или серый IP — только на указанном IP
Параметр "-t" устанавливает указанную директорию «directory root». Например:

Кроме того,. вы может указать имя конкретного файла-роутера. Например:

Вывод этого роутера будет парситься и выполняться сервером. Простой пример:

Если скрипт вернет FALSE, тогда запрашиваемый URI будет обрабатываться сервером, который будет выдавать запрошенный ресурс, либо вернет 404 ошибку. Если скрипт возвращает что-либо ещё, вывод скрипта передастся клиенту.
Хотя данный подход даёт нам больше контроля, есть несколько вещей, которые вы должны знать. Во-первых, PHP сервер отдаёт только минимальный набор HTTP заголовков:
D
Сравним это с заголовками, возвращаемыми сервером Apache:

Если ваше приложение использует заголовки, то оно должно учитывать разницу в development-среде и в production.
Во-вторых, встроенный сервер имеет другое SAPI (Server API). Таким образом выполняя маршрутизацию в index,php вы можете определить на тестовом или боевом сервер происходит обращение к скрипту. php_sapi_name() вернет «cli-server» на встроенном сервере:

Существует одна специальная INI директива — «cli_server.color». Данная директива возвращает раскрашенный вывод в консоли. Создайте пустой файл с именем cli-server.ini и вставьте эту строку:

Вы можете создать уникальную конфигурацию окружения для вашего сервера, указав в вашем INI файле необходимые директивы. Не объявленные директивы примут значения по-умолчанию. Сейчас мы объявили только одну директиву — cli_server.color.
Запустить сервер с параметром "-c" с указанием INI файла:

Если ваш терминал поддерживает цвета, то вы сможете увидеть «цветной» вывод в консоли. 200 статус будет выделен зеленым, 404 — оранжевым, а ошибки сценария будут выделены красным цветом.

Создаём персональный сервер

Теперь, когда вы знаете всё, что необходимо знать о встроенном сервере, давайте сделаем что-нибудь крутое. Создадим собственный портативный сервер!
Я начну со следующей структуры нашего приложения:

Папка «library» содержит код приложения, «public» — корневая директория, содержит index.php и несколько статичных файлов. Особое внимание в этом руководстве будет уделено папке «server», и поэтому наше приложение будет состоять из простого «Hello Word!» и нескольких картинок и css.
Наша цель — получить возможность запускать сервер из директории приложения одной командой, а наш сервер будет заботиться о роутинге, HTTP заголовках и ошибках.

Давайте рассмотрим сценарий запуска:

Я предполагаю, что скрипт запускается из директории приложения, поэтому INIFILE, DOCROOT, ROUTER определяются используя pwd. Путь до php определяется используя команду which. Если php не был найден в пользовательском $PATH, то скрипт завершит работу ошибкой.
Данный способ работает достаточно хорошо, но давайте предоставим пользователю возможность изменить любой из заданных параметров из командной строки, например:

Продолжим, папка «errors» содержит файлы для сообщений об HTTP ошибках. Вот пример о 403 ошибке: хотя я и использовал только HTML, скрипт будет подключен, использую include, поэтому вы можете использовать любой php код:

Теперь посмотрим на router.php. Задача данного файла в получении и управлении всеми запросами и передавать их серверу, только если данный файл существует. Все страницы ошибку отображаются путём подключения шаблона.

В первых строках я определяю некоторые глобальные параметры, такие как DIRECTORY_INDEX, директория с шаблонами ошибок. Параметр date_default_timezone_set() должен совпадать с настройками ОС, иначе будут несоответствия между записями в логе и на сервере. Так же я добавил список разрешенных IP адресов, для повышения безопасности.
Функция logAccess() необходима, потому что когда скрипт роутинга принимает запрос лог сервера по-умолчанию игнорируется. Функция принимает только код статуса, а формат вывода полностью соответствует формату сервера.
Наша первая задача — проверка безопасности. Если IP клиента не находится в массиве разрешенных IP, выводим сообщение об ошибке и завершаем работу скрипта. Нам необходимо отдавать код статуса отличный от 200 и функция header() не будет работать в здесь, поэтому мы используем новую функцию — http_response_code.
Если IP клиента находится в массиве разрешенных IP, то следующий наш шаг — получение запрашиваемого пути и расширения файла. Если расширение пустое, считаем, что пользователь запрашивает папку и строим получаем путь, используя определенный сначала DIRECTORY_INDEX.
В завершении, если запрашиваемый файл существует, возвращаем FALSE, и позволяем серверу обратиться к файлу. Если же нет, то отображается сообщение о 404 ошибке.

Резюме

Это всё. Как видите, php сервер просто в использовании. Наш персональный сервер очень прост. Код можно оптимизировать и включать в более сложные и функциональные классы. Happy coding!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *