Как использовать встроенные веб-серверы PHP

Дата обновления перевода 2023-07-06

Как использовать встроенные веб-серверы PHP

С выхода PHP 5.4, CLI SAPI поставляется со встроенным веб-сервером. Он может быть использован для запуска ваших PHP-приложений локально во время разработки, для тестирования или для демонстрации приложения. Таким образом, вам не нужно заморачиваться конфигурацией полномасштабного веб-сервера такого, как Apache или Nginx.

Caution

Встроенный веб-сервер должен быть запущен только в контролируемом окружении. Он не создан для использования в публичных сетях.

Запуск веб-сервера

Запустить приложение Symfony с использованием встроенного веб-сервера PHP так же легко, как выполнить команду server:start:

1
$ php bin/console server:start

Это запускает веб-сервер в localhost:8000 в фоновом режиме, который обслуживает ваше приложение Symfony.

По умолчанию, веб-сервер слушает порт 8000 на закольцованном устройстве. Вы можете изменить канал, передающий IP-адрес и порт, в качестве аргумента командной строки:

1
$ php bin/console server:start 192.168.0.1:8080

Note

Теперь вы можете использовать команду server:status, чтобы проверить, слушает ли веб-сервер определённый канал:

1
2
3
$ php bin/console server:status

$ php bin/console server:status 192.168.0.1:8080

Первая команда показывает вам, будет ли ваше приложение Symfony использовать сервер чере localhost:8000, а вторая делает то же самое для 192.168.0.1:8080.

Tip

Некоторые системы не поддерживают команду server:start, в этих случаях вы можете выполнить команду server:run. Эта команда ведёт себя немного по-другому. Вместо запуска сервера в фоновом режиме, она заблокирует текущий терминал до того, как вы её прервёте (это делается путём нажатия Ctrl и C).

Если вы хотите использовать встроенный веб-сервер изнутри виртуальной машины, а потом закружать сайт из браузера на вашей хостовой машие, вам понадобится слушать адрес 0.0.0.0:8000 (т.е. все IP-адреса, которые назначены виртуальной машине):

1
$ php bin/console server:start 0.0.0.0:8000

Caution

НИКОГДА не слушайте любые интерфейсы на компьютере, к которому можно получить прямой доступ из интернета. Встроенный веб-сервер не создан для использования в публичных сетях.

Опции команды

Встроенный веб-сервер ожидает скрипт "маршрутизатора" (прочитайте про скрипт "маршрутизатора" на php.net) в качестве аргумента. Symfony уже передаёт такой скрипт, когда команда выполняетя в окружени prod или dev. Используйте опцию --router в любом другом окружении, или используйте другой скрипт маршрутизатора:

1
$ php bin/console server:start --env=test --router=app/config/router_test.php

Если корневой документ вашего приложения отличается от стандартного макета каталога, вам нужно передать правильную локацию, используя опцию --docroot:

1
$ php bin/console server:start --docroot=public_html

Остановка сервера

Когда вы закончили, вы можете просто остановить веб-сервер, используя команду server:stop:

1
$ php bin/console server:stop

Как и с командой запуска, если вы опустите информацию о канале, Symfony остановит сервер, привязанный к localhost:8000. Просто передайте информацию о канале, когда веб-сервер слушает другой IP-адрес или другой порт:

1
$ php bin/console server:stop 192.168.0.1:8080