gitwtfhub

wtf is frankenphp?

php/frankenphp — explained in plain English

Analysis updated 2026-06-24

11,065GoAudience · developerComplexity · 3/5Setup · easy

TL;DR

FrankenPHP replaces Nginx and PHP-FPM with a single binary that serves PHP apps with automatic HTTPS, HTTP/2, and a worker mode that keeps Laravel or Symfony loaded in memory between requests.

Mindmap

mindmap
  root((frankenphp))
    What it replaces
      Nginx
      PHP-FPM
      Manual config
    Key features
      Automatic HTTPS
      HTTP2 and HTTP3
      Worker mode
    Supported frameworks
      Laravel
      Symfony
      WordPress
    Installation
      Single binary
      Docker image
      Package managers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Replace a Nginx and PHP-FPM setup with one binary to simplify your server configuration.

REASON 2

Speed up a Laravel or Symfony app using worker mode that keeps the app in memory between requests.

REASON 3

Deploy WordPress or Drupal with automatic HTTPS using FrankenPHP on Linux, macOS, or Windows.

REASON 4

Embed PHP execution inside a Go application by using FrankenPHP as a Go library.

What's in the stack?

GoPHP

How it stacks up

php/frankenphpblevesearch/blevebufbuild/buf
Stars11,06511,03111,111
LanguageGoGoGo
Setup difficultyeasymoderatemoderate
Complexity3/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

Wtf does this do

FrankenPHP is an application server for PHP, the programming language used to build websites like WordPress, Laravel apps, and Symfony projects. Most PHP setups require multiple separate pieces working together: a web server like Nginx, a PHP processor called PHP-FPM, and manual configuration to connect them. FrankenPHP replaces that entire stack with a single binary. It is built on top of Caddy, a web server written in Go that handles HTTPS certificates automatically. Because of this, FrankenPHP provides automatic HTTPS right out of the box, along with support for HTTP/2 and HTTP/3, which are newer and faster versions of the web protocol. It also supports a worker mode that keeps your PHP application loaded in memory between requests, which can significantly speed up frameworks like Laravel and Symfony that normally reload from scratch on every request. You can install FrankenPHP as a standalone binary on Linux, macOS, or Windows, and it comes bundled with PHP 8.5 and the most commonly used PHP extensions. No separate PHP installation is required on Linux. Package manager options (apt, dnf, apk, Homebrew) are available, as are Docker images. To start serving a PHP project, you run a single command in your project folder. For existing projects built on Symfony, Laravel, WordPress, Drupal, Joomla, or Magento, there are integration guides covering how to switch from a traditional Nginx and PHP-FPM setup. FrankenPHP can also function as a Go library, meaning developers who build applications in Go can embed PHP directly into their programs.

Yoink these prompts

Prompt 1
Migrate my Laravel app from a Nginx and PHP-FPM setup to FrankenPHP worker mode, show me the Caddyfile config and startup commands.
Prompt 2
Write a Dockerfile that uses FrankenPHP to serve a WordPress site with automatic HTTPS and PHP 8.5.
Prompt 3
How do I install FrankenPHP on Ubuntu using apt and serve a Symfony project in worker mode from day one?
Prompt 4
Show me how to embed PHP execution inside a Go program using FrankenPHP as a Go library with a minimal working example.

Frequently asked questions

wtf is frankenphp?

FrankenPHP replaces Nginx and PHP-FPM with a single binary that serves PHP apps with automatic HTTPS, HTTP/2, and a worker mode that keeps Laravel or Symfony loaded in memory between requests.

What language is frankenphp written in?

Mainly Go. The stack also includes Go, PHP.

How hard is frankenphp to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is frankenphp for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.