Перейти к содержимому
FrankenPHP
Esc
↑↓навигация↵открыть⌘Jпредпросмотр

Современный сервер приложений PHP, написанный на языке Go

FrankenPHP - это новый сервер приложений для PHP-приложений (основанный на Caddy) и библиотека для встраивания интерпретатора PHP в веб-серверы Go.

curl https://frankenphp.dev/install.sh | sh
Начать
  • Встроенная поддержка
  • Drupal
  • Sulu
  • WordPress
  • Laravel
  • Symfony
  • API Platform
  • Magento

Начните прямо сейчас!

Запустите высококачественный PHP-сервер в производство с помощью одной команды!

# Установите FrankenPHP на Linux или macOS
curl https://frankenphp.dev/install.sh | sh

# Или на Windows, с PowerShell
irm https://frankenphp.dev/install.ps1 | iex

# Обслуживание каталога public/
frankenphp php-server -r public/

# Запуск сценария командной строки
frankenphp php-cli script.php

Режим Worker

The FrankenPHP mascot in a hard hat, driving an excavator

public/index.php

<?php
// Boot your app once
require __DIR__.'/vendor/autoload.php';
$app = new \App\Kernel();
$app->boot();

$handler = static function () use ($app) {
    echo $app->handle($_GET, $_POST, $_COOKIE, $_FILES, $_SERVER);
};

// …then serve request after request
while (\frankenphp_handle_request($handler)) {
    gc_collect_cycles();
}
  • Скрипт Worker

    Запустите ваше приложение один раз, оно остается в памяти!

  • Прямой доступ

    Поддерживается нативно в Symfony, API Platform, Laravel...

  • Простой

    Использует стандартные суперглобальные переменные: не нужен PSR-7.

  • Быстрый

    В 3,5 раза быстрее, чем FPM на приложениях API Platform, согласно нашим бенчмаркам.

  • Эффективный

    FrankenPHP написан на Go и C. Он использует ключевую особенность Go — горутины!

  • Опциональный

    Ваше приложение может работать как есть, даже если оно не поддерживает режим worker.

  • Легкое развертывание

    Работает как отдельный процесс: один бинарный файл, никаких внешних сервисов не требуется.

  • Watcher

    Worker перезапускается при каждом изменении кода.

Read the worker docs →

Caddyfile

localhost {
    # Активируйте сжатие (необязательно)
    encode zstd br gzip
    # Запуск файлов PHP в текущем каталоге и обслуживание ресурсов
    php_server
}

Простая настройка

Три строки конфигурации: это все, что вам нужно для запуска PHP-сервера производственного уровня (автоматический HTTPS, HTTP/3, сжатие Brotli...), работающего на базе Caddy.

  • HTTPS ✓
  • HTTP/3 ✓
  • zstd · br · gzip ✓
  • Early Hints ✓
Документация →

FrankenPHP вкратце

The FrankenPHP elephant and the Go gopher in a laboratory, lightning crackling between them
Go + C + PHP

Born in a lab. Written in Go.

FrankenPHP is a Caddy module and a library: embed the PHP interpreter in any Go program and serve PHP scripts through net/http.

server, _ := frankenphp.NewServer("public/")
frankenphp.Init(frankenphp.WithServer(server))
defer frankenphp.Shutdown()

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    server.ServeHTTP(w, r)
})
Use FrankenPHP as a Go library →

Современнее, чем когда-либо!

  • Использует официальный PHP-исполнитель, встроенный в передовой веб-сервер: Caddy
  • Нативная поддержка HTTP/1.1, HTTP/2 и HTTP/3
  • Автоматическая генерация и продление сертификатов HTTPS (Let's Encrypt или ZeroSSL)
  • Просто скопируйте файлы PHP в корневой каталог — и все готово!
  • Создает автономные бинарные файлы, самозапускаемые и без зависимостей, для ваших веб-приложений на PHP и инструментов командной строки.
  • Самые популярные PHP-расширения, включая OPcache и XDebug, поддерживаются нативно.
Попробуйте FrankenPHP
The FrankenPHP mascot hugging a big red heart

Need a hand? We've got heart.

Les-Tilleuls.coop, the cooperative behind FrankenPHP, helps teams migrate, host and speed up their PHP apps.