Caddy is an extensible web server written in Go that serves HTTP/1.1, HTTP/2 and HTTP/3 and enables HTTPS automatically by default.
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
Install FrankenPHP with Homebrew
brew install dunglas/frankenphp/frankenphp - 2
Serve the current directory
frankenphp php-server - 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
A high-performance web server, reverse proxy, load balancer, API gateway and content cache written in C.
A high-performance, minimalist web framework for Go, built on the standard net/http package.
A JavaScript, TypeScript, and WebAssembly runtime with secure defaults, built on V8, Rust, and Tokio.
An HTTP client for the JVM, Android, and GraalVM that reuses connections, supports HTTP/2, and caches responses by default.
A tiny authentication and authorization server that works as middleware for Traefik, Nginx and Caddy, or as a standalone SSO login server.