Как использовать встроенные веб-серверы PHP
С выхода PHP 5.4, CLI SAPI поставляется со встроенным веб-сервером. Он может быть использован для запуска ваших PHP-приложений локально во время разработки, для тестирования или для демонстрации приложения. Таким образом, вам не нужно заморачиваться конфигурацией полномасштабного веб-сервера такого, как Apache или Nginx.
Caution
Встроенный веб-сервер должен быть запущен только в контролируемом окружении. Он не создан для использования в публичных сетях.
Запустить приложение Symfony с использованием встроенного веб-сервера PHP так
же легко, как выполнить команду server:start
:
Это запускает веб-сервер в localhost:8000
в фоновом режиме, который обслуживает
ваше приложение Symfony.
По умолчанию, веб-сервер слушает порт 8000 на закольцованном устройстве. Вы можете изменить канал, передающий IP-адрес и порт, в качестве аргумента командной строки:
Note
Теперь вы можете использовать команду server:status
, чтобы проверить, слушает
ли веб-сервер определённый канал:
Первая команда показывает вам, будет ли ваше приложение Symfony использовать
сервер чере localhost:8000
, а вторая делает то же самое для 192.168.0.1:8080
.
Tip
Некоторые системы не поддерживают команду server:start
server:run
. Эта команда ведёт себя немного
по-другому. Вместо запуска сервера в фоновом режиме, она заблокирует текущий
терминал до того, как вы её прервёте (это делается путём нажатия Ctrl и C).Встроенный веб-сервер ожидает скрипт «маршрутизатора» (прочитайте про скрипт
«маршрутизатора» на php. net) в качестве аргумента. Symfony уже передаёт
такой скрипт, когда команда выполняетя в окружени prod
или dev
. Используйте
опцию
в любом другом окружении, или используйте другой скрипт маршрутизатора:
Если корневой документ вашего приложения отличается от стандартного макета каталога,
вам нужно передать правильную локацию, используя опцию --docroot
:
Когда вы закончили, вы можете просто остановить веб-сервер, используя команду server:stop
:
Как и с командой запуска, если вы опустите информацию о канале, Symfony остановит
сервер, привязанный к localhost:8000
. Просто передайте информацию о канале,
когда веб-сервер слушает другой IP-адрес или другой порт:
Web, PHP и Apache OTUS
Начиная с версии 5.4.0, язык программирования PHP содержит встроенный веб-сервер (server), который находится в модуле CLI SAPI. В этой статье мы поговорим, как он работает, настраивается и запускается. Отдельное внимание уделим известному web-серверу Apache.
В языке программирования PHP сервер (_server) выполняет лишь один однопоточный процесс, поэтому если запрос будет заблокирован, программные приложения остановятся, причем запросы URL обслуживаются из текущей директории, где он был запущен (когда не используется опция -t, обеспечивающая явное указание корневого документа). Если URL запроса не указывает на конкретный файл, в указанной директории вернется index.php или index.html. Если же файлы не существуют, их поиск продолжится в родительской директории и т. д., причем до тех пор, пока файлы не будут обнаружены либо не будет достигнут корень документа. Когда обнаружен index.php/index.html, он возвращается, причем в $_SERVER[‘PATH_INFO’] будет последняя часть URL. В обратном случае вернется код 404.
Если в процессе запуска web сервера файл PHP указывается в командной строке, он рассматривается в качестве скрипта «маршрутизации» (как роутер). Этот скрипт выполняется лишь в начале каждого запроса HTTP. Если же скрипт возвращает false, тогда запрашиваемый ресурс возвращается как есть. В обратном случае браузеру вернется вывод скрипта.
Разработчик может настроить встроенный PHP web server таким образом, чтобы он осуществлял разветвление нескольких воркеров в целях проверки кода, требующего нескольких одновременных запросов ко встроенному веб серверу. Для этого, начиная с версии 7.4.0, надо задавать в переменной окружения число требуемых воркеров, делая это перед запуском:
Данная функция является экспериментальной. Она не поддерживается в операционной системе Windows и не предназначена для использования в production. Да и вообще, встроенный web_server обычно не предназначен для того, чтобы использовать его в production.
Запуск PHP-сервера
Запуск осуществляется следующим образом:
$ cd ~/public_html
$ php -S localhost:8000
В результате в консоли будет приблизительно такой вывод:
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit
После этого пишем URL-запрос:
— http://localhost:8000/;
— http://localhost:8000/myscript. html.
По итогу в консоли будет выведено примерно следующее:
Можно отметить, что до версии 7.4.0 статические ресурсы с символическими ссылками в операционной системе «Виндовс» доступны не были.
Теперь давайте выполним запуск, указав корневую директорию:
$ cd ~/public_html
$ php -S localhost:8000 -t foo/
Вывод в консоли:
В примере ниже используется скрипт маршрутизации. Запросы изображений будут их отображать, однако запросы файлов HTML вернут строку «Добро пожаловать».
Обратите внимание, что встроенный web _server не должен применяться в общедоступной сети.
CLI _server: проверка использования
Чтобы обеспечить совместное использование скрипта маршрутизации при разработке с CLI _server и далее с рабочим (production) web-сервером, применяют следующую команду:
Поддержка неподдерживаемых файловых типов
Если требуется обслуживание статических ресурсов с MIME-типами, не поддерживаемыми web CLI _server, пригодится следующий код:
$ php -S localhost:8000 router. php
Local host — так называемый локальный («местный») хост, то есть компьютер, на котором запускается программа (ПК в данном случае работает как Virtual _server).
Доступ с удаленных машин
Также у разработчика есть возможность сделать сервер на PHP доступным для всех сетевых интерфейсов на 8000 порту:
Apache HTTP _Server
Apache («Апач») — известный HTTP-сервер, имя которого заимствовано от названия племени североамериканских индейцев. Это кроссплатформенное программное обеспечение, поддерживаемое многими операционными системами:
— Linux,
— Windows,
— BSD,
— Mac OS,
— Novell NetWare,
— BeOS.
Широко известна связка Apache + PHP + MySQL.
Основные достоинства «Апача» — гибкость конфигурации и надежность. С его помощью можно подключать для предоставления данных внешние модули, применять для аутентификации пользователей СУБД, модифицировать сообщения об ошибках и многое другое. Также Apache-серверы (servers) поддерживает протокол IPv4.
Одно из преимуществ — интеграция с другим программным обеспечением и языками программирования. Есть много модулей, обеспечивающих веб-серверу Apache поддержку разных систем разработки и языков программирования. Что реализуют в модулях:
— поддержку языков программирования;
— исправление ошибок;
— добавление новых функций;
— возможность модификации основных фукнций;
— средства усиления безопасности.
Раз уж затронули тему безопасности, то тут «Апач» имеет разные механизмы, включая механизм разграничения доступа к данным. Основное:
— ограничение доступа к некоторым файлам/каталогам;
— механизм авторизации пользователей, обеспечивающий доступ к каталогу на основании HTTP- и digest-аутентификации;
— ограничение доступа к конкретным каталогам либо всему серверу, которое основано на IP-адресах пользователей;
— запрет доступа к файлам по их типу, что можно распространить как на всех пользователей, так и на некоторую их часть, к примеру, организовав запрет доступа к файлам конфигурации/базы данных.
Некоторые модули позволяют реализовывать авторизацию с помощью СУБД либо PAM.
Вдобавок ко всему, «Апачу» не проблема поддерживать механизмы CGI и FastCGI, позволяющие исполнять программы почти на любых языках программирования, включая C/C++, Lua, Java.
Если вас интересует установка и настройка Apache, обратите внимание на дополнительные ссылки ниже, где вы найдете нужную информацию.
Данная статья про server PHP написана на основании следующих материалов:
- Page № 1: https://www.php.net/manual/ru/features.commandline.webserver.php;
- Page № 2: https://www.php.net/manual/ru/install.unix.apache2.php.
Хотите знать больше и получить самую современную информацию? Обратите внимание на соответствующий курс в Otus:
Веб-сервер— есть ли простой сервер разработки PHP?
Изменено 3 года, 5 месяцев назад
Просмотрено 45 тысяч раз
82
Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.
При написании веб-приложений на Python очень просто запустить сервер разработки. Django и Google App Engine (GAE) поставляются с простыми серверами.
Основная функция, которую я ищу, это отсутствие конфигурации. Я хочу что-то вроде сервера разработки GAE, где вы просто передаете каталог приложения в качестве параметра при запуске сервера.
Есть ли причина, по которой с PHP это сложнее?
- php
- webserver
На самом деле PHP 5.4.0 недавно представил свой встроенный веб-сервер:
cd ~/public_html php -S локальный: 8000
4
Если это возможно на любой используемой вами платформе, PHP 5.4 имеет сервер разработки, подобный Django.
Вам также может понадобиться фрагмент кода, который я использую для обнаружения сервера разработки и воспроизведения двух наиболее распространенных вариантов использования mod_rewrite. (Скрытие
в URL-адресах и передача статических файлов для обслуживания)
(Да, для этого есть встроенный переключатель командной строки, но он не совсем соответствует фрагменту кода mod_rewrite, который использует большинство людей, и вызвало у меня ложные ошибки 404 из-за этого несоответствия.)
Используйте XAMPP: http://www.apachefriends.org/en/xampp.html Его легко установить и настроить.
РЕДАКТИРОВАТЬ:
начиная с PHP 5.4 (который был выпущен через 2 года после этого ответа) есть встроенный веб-сервер. Сегодня это неточно, пожалуйста, используйте метод, предоставленный k0pernikus в его ответе.
3
Попробуйте использовать пакет
файл- Открыть блокнот
- php -S локальный: 8000
- сохранить файл с расширением .bat => server.bat
- теперь нажмите
server.bat
, ваш сервер готов на http://localhost:8000.
DEP
если вы получили ошибку php не распознает внутреннюю или внешнюю команду
затем перейдите к переменной среды и отредактируйте путь к php.
"C:\wamp\bin\php\php5.4.3" Обновление
: я разработал версию на основе докера, которую я начал использовать вместо easy_php_dev: localdev
easy_php_dev делает многосайтовую разработку php очень простой и быстрой. Единственным ограничением является то, что он предназначен только для OSX. Раскрытие информации: я автор.
0
Когда мне нужен быстрый веб-сервер php для локального тестирования, я использую QuickPHP
1
Мы разработали очень маленький сервер разработки, поведение которого аналогично серверу разработки django.
Софт называется sng и работает с php и nginx. Он сделан на javascript и nodejs, вы можете легко установить его с помощью npm:
npm install sng
AppServ всегда прекрасно настраивает все, что вам нужно!
Развлечение со встроенным веб-сервером Php
Резервные копии серверов, баз данных, приложений и Laravel — получите полную защиту с помощью SnapShooter
- Развлекайтесь со встроенным веб-сервером PHP
- Введение
- Применение
- Запуск pChart на встроенном веб-сервере PHP
- Конец
Если вы еще не слышали, возможно, вам следует знать, начиная с PHP 5.
4, в PHP есть встроенный веб-сервер. В этом уроке мы научим вас, как использовать встроенный веб-сервер PHP. И покажем вам, как мы можем использовать преимущества этого простого веб-сервера для забавных вещей.
#Introduction
Первый вопрос, который приходит на ум, когда в PHP 5.4 появился встроенный веб-сервер: зачем нам нужен встроенный сервер PHP, если у нас уже есть Apache/Nginx? И у нас также есть несколько хорошо упакованных инструментов, таких как WAMP и XAMPP. Ответ указан на официальной странице PHP. Этот веб-сервер был разработан для помощи в разработке приложений. Это не полнофункциональный веб-сервер, поэтому мы не должны использовать его для производства.
Однако, поскольку он поставляется с PHP, он очень удобен, когда нам нужно раскрутить веб-сервер для тестирования или разработки. Это избавляет нас от установки какого-либо реального сервера или других сторонних инструментов. В разделе 3 этого руководства мы используем встроенный веб-сервер PHP для запуска примеров pChart. Это легко и быстро. Вы можете применять те же методы, когда захотите что-то проверить.
#Usage
В этом разделе мы рассмотрим пару простых команд для веб-сервера PHP.
Запуск сервера
php -S localhost:8000
Он будет рассматривать текущий каталог как корневой каталог документа, и если в запросе не указан файл, то обслуживаются либо index.php, либо index.html в данном каталоге. Вы сможете посетить сайт по URL-адресу localhost:8000
Указание корневого каталога документа
php -S localhost:8000 -t foo/
Параметр -t позволяет указать корневой каталог документа. В приведенном выше примере запрос будет обслуживаться из каталога foo .
Использование файла маршрутизатора
php -S localhost:8000 router.php
В некоторых случаях вы можете захотеть использовать сторонний маршрутизатор для обслуживания запроса. Вы можете сделать это легко, предоставив файл маршрутизатора дополнительно.
Как видите, встроенный веб-сервер PHP — это простой в использовании веб-сервер, который не требует сложной настройки. Он идеально подходит для целей разработки и тестирования.
#Запуск pChart на встроенном веб-сервере PHP
Чтобы продемонстрировать, как мы можем повеселиться со встроенным веб-сервером PHP. Мы покажем вам, как легко и быстро настроить примеры pChart на нашем локальном компьютере. Краткая информация о pChart, это серверная библиотека построения графиков. Это означает, что для работы требуется сервер.
Начнем.
Шаг 1: Загрузите pChart
curl -LOk http://www.pchart.net/release/pChart2.1.4.tar
Мы используем Mac, и нам удобно работать с Терминалом. Не стесняйтесь загружать его напрямую.
Шаг 2. Извлеките файл zip/tar
tar -xzf pChart2.1.4.tar
Шаг 3: Запустите сервер
cd pChart2.