Установка, запуск и встроенный сервер
PHP - это язык, который живёт почти везде: на хостингах, в старых проектах и в сердцах тех, кто однажды писал echo "Привет";.
Сегодня твоя задача - запустить PHP локально и убедиться, что он вообще работает. Спойлер: работает.
Варианты установки
Выбери свою ОС:
brew install php
php -v
sudo apt update
sudo apt install -y php-cli
php -v
Самый простой путь для новичка:
- XAMPP или Laragon - готовый сборник PHP + Apache + MySQL.
- Либо WSL2 + Ubuntu (если хочешь «как на сервере»; тогда дальше используй вкладку Linux).
После установки проверь:
php -v
Какую версию выбрать
PHP активно развивается. На 2026 год актуальны версии 8.1-8.3, более старые официально не поддерживаются.
| Версия | Что нового (для нас) |
|---|---|
| 8.1 | enum, readonly свойства, never тип, fibers |
| 8.2 | readonly классы, DNF-типы (A&B|C), новые random-функции |
| 8.3 | Типизированные константы классов, json_validate(), #[Override] |
Для новых проектов ставь последнюю стабильную (8.3). Если работаешь со старым кодом - посмотри в composer.json ("require": { "php": "^8.1" }), какая минимально нужна.
Первый скрипт
Создай файл hello.php:
<?php
echo 'Привет, BackendStart!';
Запусти:
php hello.php
Если выводится строка - установка прошла нормально. Если PHP «не найден» - путь к нему не попал в PATH, переустанови через пакетный менеджер.
Встроенный сервер
PHP умеет поднимать простой сервер (для обучения - топ):
php -S localhost:8000 -t public
Где:
-S- адрес и порт-t public- папка, из которой раздаём файлы
Сделай public/index.php:
<?php
phpinfo();
Открой в браузере: http://localhost:8000.
Где живёт php.ini
Конфигурация PHP - это файл php.ini. Узнать его расположение:
php --ini
Вывод покажет основной файл и список подгружаемых из conf.d/. Самые полезные настройки для начала:
; локально - показать все ошибки
display_errors = On
error_reporting = E_ALL
; обычно достаточно
memory_limit = 256M
; время жизни одного CLI-скрипта (0 = без лимита)
max_execution_time = 30
В проде display_errors обязательно Off - пользователь не должен видеть стектрейсы (подробно - в уроке про безопасность).
Расширения PHP
Большая часть стандартной библиотеки - это расширения (mbstring, pdo_mysql, curl, gd, ...). Что включено сейчас:
php -m
Если нужного нет - поставь системным пакетом и включи строкой extension=имя в php.ini:
sudo apt install php-mbstring php-pdo-mysql
; в php.ini (обычно достаточно одной строки)
extension=mbstring
extension=pdo_mysql
После правки php.ini перезапусти CLI/FPM, иначе изменения не применятся.
OPcache - короткое intro
OPcache кеширует скомпилированный байт-код в памяти. Без него каждый запрос заново парсит и компилирует PHP-файлы. С ним - приложение работает в 2-3 раза быстрее.
Минимальная активация в php.ini:
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.validate_timestamps = 1 ; локально 1, на проде 0 (см. [урок 22-fpm](./22-fpm.md))
Проверить, что включён: php -i | grep opcache.enable.
Запуск через Docker
Если не хочешь ставить PHP в систему - используй официальные образы:
# одноразовый запуск
docker run --rm -v "$PWD":/app -w /app php:8.3-cli php hello.php
# встроенный сервер
docker run --rm -p 8000:8000 -v "$PWD":/app -w /app php:8.3-cli \
php -S 0.0.0.0:8000 -t public
В реальных проектах PHP в Docker всегда идёт связкой php:8.3-fpm + nginx - это разберём в уроке про PHP-FPM.
Типичные ошибки
command not found: php- PHP не вPATH. Перезапусти терминал; если не помогло - переустанови черезbrew/apt.Could not open input file- путь к файлу указан неверно. Проверь, что ты в нужной директории (pwd).- Адрес
localhost:8000уже занят. Что-то другое слушает порт - смени на 8001 или останови предыдущий процесс (lsof -i :8000). - Изменил
php.ini- ничего не поменялось. Файлphp.iniдля CLI и для FPM/Apache - это разные файлы. Проверь черезphp --ini, какой именно используется. - Расширение не включается после
extension=.... Возможно, не установлен системный пакет (php-mbstring) -extension=- это только активация, не установка.
Best practices
- На локальной машине держи ту же major-версию, что и в проде, - иначе ловишь несовместимости при деплое.
- Версию PHP проекта фиксируй в
composer.json("require": { "php": "^8.3" }) - Composer не даст поставить зависимости на несовместимом PHP. - Для CLI-команд используй
php script.php, для веба - встроенный сервер локально, FPM+Nginx на проде. Не путай контексты. - В IDE поставь плагин/настройку для подсветки PHP-версии (PhpStorm - встроено, VS Code - PHP Intelephense).
- Composer - обязательный спутник: про него подробно в уроке 16-namespaces.
Мини-задание
- Установи PHP 8.3 и убедись, что
php -vпоказывает мажорную 8.3. - Запусти
hello.phpиз CLI. - Подними встроенный сервер, открой
phpinfo()в браузере, найди в нём разделopcache- включён ли он. - Через
php --iniнайди путь к своемуphp.ini, открой его и посмотри значениеmemory_limit.