Repolode
php

php/frankenphp

A modern PHP application server built on the Caddy web server, with worker mode, Early Hints, HTTP/3 and automatic HTTPS.

Stars
11,441
Forks
498
Open issues
117
Last commit
20 hours ago

What is it?

FrankenPHP is an application server for PHP written in Go and built on top of the Caddy web server. It runs any PHP application, and it offers worker mode, where the application stays loaded in memory between requests, along with Early Hints, real-time support through Mercure, and hot reloading. Automatic HTTPS, HTTP/2 and HTTP/3 are included.

The project ships as a standalone binary for Linux, macOS (Apple Silicon) and Windows, with rpm, deb and apk packages, Homebrew and Docker images available as well. Laravel and Symfony have official integrations with worker mode. FrankenPHP can also be used as a Go library to embed PHP in an application that uses net/http.

The project provides commands such as `frankenphp php-server` to serve a directory and `frankenphp php-cli` to run scripts. It also supports creating self-contained PHP apps and static binaries, and it lets developers write PHP extensions in Go.

Key features

  • 01Worker mode keeps applications loaded between requests.
  • 02Early Hints (103 status code) and HTTP/2 and HTTP/3 support.
  • 03Automatic HTTPS and real-time capabilities via Mercure.
  • 04Hot reloading during development.
  • 05Standalone binaries, system packages and Docker images.

Use cases

  • Running Laravel or Symfony applications in worker mode for better throughput.
  • Replacing an Nginx and PHP-FPM setup with a single server binary.
  • Embedding PHP inside a Go service using net/http.
  • Packaging a PHP application as a self-executable binary.

Quick start

  1. 1

    Install FrankenPHP with Homebrew

    brew install dunglas/frankenphp/frankenphp
  2. 2

    Serve the current directory

    frankenphp php-server
  3. 3

    Open https://localhost in your browser and accept the self-signed certificate

Things to know

  • The standalone macOS binary supports only Apple Silicon.
  • Local HTTPS uses a self-signed certificate that you must accept manually.

Topics

FAQ

What is frankenphp?
A modern PHP application server built on the Caddy web server, with worker mode, Early Hints, HTTP/3 and automatic HTTPS. FrankenPHP is an application server for PHP written in Go and built on top of the Caddy web server. It runs any PHP application, and it offers worker mode, where the application stays loaded in memory between requests, along with Early Hints, real-time support through Mercure, and hot reloading. Automatic HTTPS, HTTP/2 and HTTP/3 are included.
Is frankenphp free to use? What license does it have?
frankenphp is open source under the MIT license. Check the license terms before using it in commercial products.
Is frankenphp still maintained?
Actively maintained. The last commit to frankenphp was on Oct 21, 2026.
What can I use frankenphp for?
Running Laravel or Symfony applications in worker mode for better throughput. Replacing an Nginx and PHP-FPM setup with a single server binary. Embedding PHP inside a Go service using net/http. Packaging a PHP application as a self-executable binary.
How do I install frankenphp?
Install FrankenPHP with Homebrew: brew install dunglas/frankenphp/frankenphp Serve the current directory: frankenphp php-server Open https://localhost in your browser and accept the self-signed certificate
Where can I get frankenphp?
The source code and installation instructions are on GitHub: https://github.com/php/frankenphp

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects