Швидкий старт
Офіційний образ OxPHP містить сервер, PHP, розширення OxPHP і всі залежності часу виконання, тож від порожнього каталогу до робочого застосунку вас відділяє лише кілька команд.
Одна команда
Якщо у вас уже є PHP-проєкт із каталогом public/:
docker run -p 80:80 -v .:/var/www/html ghcr.io/oxphp/oxphp:0.13.0Відкрийте http://localhost/. Ваш застосунок працює.
Щоб увімкнути внутрішній сервер (health, метрики, конфігурація):
docker run -p 80:80 -p 9090:9090 -e INTERNAL_ADDR=0.0.0.0:9090 -v .:/var/www/html ghcr.io/oxphp/oxphp:0.13.0Покрокове налаштування з Docker Compose
Докладніший розбір: від порожнього каталогу до робочого PHP-застосунку з перевірками стану та структурованим журналюванням.
-
Створіть каталог проєкту.
mkdir my-oxphp-app && cd my-oxphp-app -
Створіть Dockerfile.
FROM ghcr.io/oxphp/oxphp:0.13.0 COPY --chown=www-data:www-data . /var/www/htmlОфіційний образ містить бінарний файл сервера, PHP 8.4 або 8.5 ZTS (типово 8.5; щоб отримати 8.4, використайте
:0.13.0-php8.4або будь-який тег*-php8.4*), PHP-розширення OxPHP і всі залежності часу виконання. -
Додайте compose.yaml.
services: oxphp: build: . ports: - "80:80" - "9090:9090" environment: - LISTEN_ADDR=0.0.0.0:80 - DOCUMENT_ROOT=/var/www/html/public - INTERNAL_ADDR=0.0.0.0:9090 - LOG_LEVEL=info - ACCESS_LOG=allПорт
80обслуговує ваш застосунок. Порт9090відкриває внутрішній сервер для перевірок стану, метрик Prometheus і знімка активної конфігурації. -
Створіть PHP-застосунок.
mkdir -p publicСтворіть
public/index.php:<?php $requestId = oxphp_request_id(); $info = oxphp_server_info(); echo "<h1>OxPHP</h1>\n"; echo "<p>Request ID: {$requestId}</p>\n"; echo "<p>Worker: {$info['worker_id']}</p>\n"; echo "<p>SAPI: " . php_sapi_name() . "</p>\n"; echo "<p>Version: {$info['version']}</p>\n"; echo "<p>Time: " . date('c') . "</p>\n";oxphp_request_id()повертає унікальний ідентифікатор, призначений кожному запиту.oxphp_server_info()повертає відомості про запущений сервер, зокремаversion,worker_id,request_time,worker_modeіruntime_hooks. -
Зберіть і запустіть.
docker compose up -d --build -
Перевірте застосунок.
curl http://localhost/Очікуваний результат:
<h1>OxPHP</h1> <p>Request ID: 67a4b3c11a2b00000001</p> <p>Worker: 0</p> <p>SAPI: cli-server</p> <p>Version: 0.13.0</p> <p>Time: 2026-03-23T12:00:00+00:00</p>Кожен запит отримує унікальний ідентифікатор. Ідентифікатор воркера показує, який потік PHP-воркера його обробив.
-
Перевірте внутрішні ендпоінти.
# Health check — 200 when healthy, 503 when degraded curl http://localhost:9090/health # Prometheus-compatible metrics curl http://localhost:9090/metrics # Active configuration (TLS paths redacted) curl http://localhost:9090/config -
Перегляньте журнали.
docker compose logs -f oxphpОскільки задано
ACCESS_LOG=all, кожен запит з’являється в журналі як структурований рядок JSON із методом, шляхом, статусом, часом відповіді та ідентифікатором запиту.
Якщо вашому застосунку потрібні додаткові розширення PHP (pdo_pgsql, intl, xdebug тощо), перегляньте
examples/dockerfile/Dockerfile
у репозиторії. Це готовий до використання багатоетапний Dockerfile з окремими цілями dev і prod.
OxPHP навмисно реєструється під однією з назв SAPI, які розпізнає OPcache. Для невідомих SAPI OPcache
вимикається; без цього перейменування виконання PHP повністю оминало б шар OPcache і працювало б
у кілька разів повільніше. Зворотний бік — php_sapi_name() не можна використати для виявлення OxPHP; натомість
використовуйте function_exists('oxphp_request_id') або OxPHP\Http\Request::current().
Промпти для вашого агента
Ці промпти розраховані на агента з підключеним MCP-сервером документації OxPHP — потрібні сторінки він прочитає сам.
Запусти мій PHP-застосунок на OxPHP. Прочитай сторінку `getting-started/quick-start` через MCP-сервер документації OxPHP.
З’ясуй за цим репозиторієм, який режим маршрутизації йому потрібен і який у нього кореневий каталог документів, а тоді дай мені найменшу конфігурацію, що його обслуговує.Що далі
- Посібник із Docker — Dockerfile для розробки та продакшену, конфігурація Compose, монтування PHP ini і налаштування перевірок стану
- Конфігурація — повний довідник змінних середовища
- Маршрутизація — режими маршрутизації Traditional, Framework, SPA і Worker
- Режим воркерів — постійні PHP-воркери, які ініціалізуються один раз і обробляють багато запитів
- Функції PHP — усі вбудовані PHP-функції OxPHP