Як використовувати вбудовані веб-сервери PHP

Дата оновлення перекладу 2022-06-02

Як використовувати вбудовані веб-сервери 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