2022-10-13 18:05:22 +02:00
# FrankenPHP: Modern App Server for PHP
2021-09-24 18:52:20 +02:00
2022-10-14 12:20:57 +02:00
<h1 align="center"><a href="https://frankenphp.dev"><img src="frankenphp.png" alt="FrankenPHP" width="600"></a></h1>
FrankenPHP is a modern application server for PHP built on top of the [Caddy ](https://caddyserver.com/ ) web server.
2025-04-22 17:16:57 +02:00
FrankenPHP gives superpowers to your PHP apps thanks to its stunning features: [_Early Hints_ ](https://frankenphp.dev/docs/early-hints/ ), [worker mode ](https://frankenphp.dev/docs/worker/ ), [real-time capabilities ](https://frankenphp.dev/docs/mercure/ ), automatic HTTPS, HTTP/2, and HTTP/3 support...
2022-10-14 12:20:57 +02:00
2024-02-27 17:21:48 +01:00
FrankenPHP works with any PHP app and makes your Laravel and Symfony projects faster than ever thanks to their official integrations with the worker mode.
2022-10-14 12:20:57 +02:00
FrankenPHP can also be used as a standalone Go library to embed PHP in any app using `net/http` .
2025-04-22 17:16:57 +02:00
[**Learn more** on _frankenphp.dev_ ](https://frankenphp.dev ) and in this slide deck:
2022-10-14 17:14:17 +02:00
<a href="https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/"><img src="https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png" alt="Slides" width="600"></a>
2022-10-14 12:20:57 +02:00
2022-10-13 18:05:22 +02:00
## Getting Started
2021-09-24 18:52:20 +02:00
2025-02-26 08:24:53 +01:00
On Windows, use [WSL ](https://learn.microsoft.com/windows/wsl/ ) to run FrankenPHP.
2025-11-21 14:31:43 +01:00
### Install Script
You can copy this line into your terminal to automatically
install an appropriate version for your platform:
2025-02-26 08:24:53 +01:00
``` console
curl https://frankenphp.dev/install.sh | sh
```
2025-11-21 14:31:43 +01:00
### Standalone Binary
We provide static FrankenPHP binaries for development purposes on Linux and macOS
containing [PHP 8.4 ](https://www.php.net/releases/8.4/en.php ) and most popular PHP extensions.
[Download FrankenPHP ](https://github.com/php/frankenphp/releases )
2025-11-26 14:19:27 +07:00
**Installing extensions: ** Most common extensions are bundled. It's not possible to install more extensions.
2025-11-21 14:31:43 +01:00
### rpm Packages
Our maintainers offer rpm packages for all systems using `dnf` . To install, run:
2025-02-26 08:24:53 +01:00
``` console
2025-11-21 14:31:43 +01:00
sudo dnf install https://rpm.henderkes.com/static-php-1-0.noarch.rpm
sudo dnf module enable php-zts:static-8.4 # 8.2-8.5 available
sudo dnf install frankenphp
2025-11-26 14:19:27 +07:00
```
**Installing extensions: ** `sudo dnf install php-zts-<extension>`
For extensions not available by default, use [PIE ](https://github.com/php/pie ):
``` console
2025-12-01 09:08:53 +01:00
sudo dnf install pie-zts
sudo pie-zts install asgrim/example-pie-extension
2025-02-26 08:24:53 +01:00
```
2025-11-21 14:31:43 +01:00
### deb Packages
Our maintainers offer deb packages for all systems using `apt` . To install, run:
2025-02-26 08:24:53 +01:00
``` console
2026-02-06 11:11:58 +01:00
VERSION=85 # 82-85 available
sudo curl https://pkg.henderkes.com/api/packages/${VERSION}/debian/repository.key -o /etc/apt/keyrings/static-php${VERSION}.asc
echo "deb [signed-by=/etc/apt/keyrings/static-php${VERSION}.asc] https://pkg.henderkes.com/api/packages/${VERSION}/debian php-zts main" | sudo tee -a /etc/apt/sources.list.d/static-php${VERSION}.list
2025-11-21 14:31:43 +01:00
sudo apt update
sudo apt install frankenphp
2025-02-26 08:24:53 +01:00
```
2025-11-26 14:19:27 +07:00
**Installing extensions: ** `sudo apt install php-zts-<extension>`
2022-05-18 11:52:24 +02:00
2025-11-26 14:19:27 +07:00
For extensions not available by default, use [PIE ](https://github.com/php/pie ):
2021-09-24 18:52:20 +02:00
2025-11-21 14:31:43 +01:00
``` console
2025-12-01 09:08:53 +01:00
sudo apt install pie-zts
sudo pie-zts install asgrim/example-pie-extension
2026-02-06 11:11:58 +01:00
```
### apk Packages
Our maintainers offer apk packages for all systems using `apk` . To install, run:
``` console
VERSION=85 # 82-85 available
echo "https://pkg.henderkes.com/api/packages/${VERSION}/alpine/main/php-zts" | sudo tee -a /etc/apk/repositories
KEYFILE=$(curl -sJOw '%{filename_effective}' https://pkg.henderkes.com/api/packages/${VERSION}/alpine/key)
sudo mv ${KEYFILE} /etc/apk/keys/ &&
sudo apk update &&
sudo apk add frankenphp
```
**Installing extensions: ** `sudo apk add php-zts-<extension>`
For extensions not available by default, use [PIE ](https://github.com/php/pie ):
``` console
sudo apk add pie-zts
sudo pie-zts install asgrim/example-pie-extension
2025-11-21 14:31:43 +01:00
```
2023-12-06 18:18:16 +01:00
2025-02-26 08:24:53 +01:00
### Homebrew
2023-12-06 18:18:16 +01:00
2025-02-26 08:24:53 +01:00
FrankenPHP is also available as a [Homebrew ](https://brew.sh ) package for macOS and Linux.
2024-10-09 04:23:56 +09:00
``` console
2025-02-26 08:24:53 +01:00
brew install dunglas/frankenphp/frankenphp
2024-10-09 04:23:56 +09:00
```
2023-09-20 14:15:41 +02:00
2025-11-26 14:19:27 +07:00
**Installing extensions: ** Use [PIE ](https://github.com/php/pie ).
### Usage
2023-12-06 18:18:16 +01:00
To serve the content of the current directory, run:
``` console
2024-10-09 04:23:56 +09:00
frankenphp php-server
2023-12-06 18:18:16 +01:00
```
2025-11-26 14:19:27 +07:00
You can also run command-line scripts with:
``` console
frankenphp php-cli /path/to/your/script.php
```
For the deb and rpm packages, you can also start the systemd service:
``` console
sudo systemctl start frankenphp
```
2025-11-21 14:31:43 +01:00
### Docker
Alternatively, [Docker images ](https://frankenphp.dev/docs/docker/ ) are available:
``` console
docker run -v .:/app/public \
-p 80:80 -p 443:443 -p 443:443/udp \
dunglas/frankenphp
```
Go to `https://localhost` , and enjoy!
> [!TIP]
>
> Do not attempt to use `https://127.0.0.1`. Use `https://localhost` and accept the self-signed certificate.
> Use the [`SERVER_NAME` environment variable](docs/config.md#environment-variables) to change the domain to use.
2022-10-13 18:05:22 +02:00
## Docs
2021-09-24 18:52:20 +02:00
2025-04-22 17:16:57 +02:00
- [Classic mode ](https://frankenphp.dev/docs/classic/ )
- [Worker mode ](https://frankenphp.dev/docs/worker/ )
- [Early Hints support (103 HTTP status code) ](https://frankenphp.dev/docs/early-hints/ )
- [Real-time ](https://frankenphp.dev/docs/mercure/ )
2025-12-24 18:17:40 +01:00
- [Logging ](https://frankenphp.dev/docs/logging/ )
2025-12-24 17:33:15 +01:00
- [Hot reloading ](https://frankenphp.dev/docs/hot-reload/ )
2025-04-22 17:16:57 +02:00
- [Efficiently Serving Large Static Files ](https://frankenphp.dev/docs/x-sendfile/ )
- [Configuration ](https://frankenphp.dev/docs/config/ )
2025-07-18 15:57:02 +02:00
- [Writing PHP Extensions in Go ](https://frankenphp.dev/docs/extensions/ )
2025-04-22 17:16:57 +02:00
- [Docker images ](https://frankenphp.dev/docs/docker/ )
- [Deploy in production ](https://frankenphp.dev/docs/production/ )
- [Performance optimization ](https://frankenphp.dev/docs/performance/ )
- [Create **standalone**, self-executable PHP apps ](https://frankenphp.dev/docs/embed/ )
- [Create static binaries ](https://frankenphp.dev/docs/static/ )
- [Compile from sources ](https://frankenphp.dev/docs/compile/ )
- [Monitoring FrankenPHP ](https://frankenphp.dev/docs/metrics/ )
2025-12-24 18:26:17 +01:00
- [WordPress integration ](https://frankenphp.dev/docs/wordpress/ )
2025-04-22 17:16:57 +02:00
- [Laravel integration ](https://frankenphp.dev/docs/laravel/ )
- [Known issues ](https://frankenphp.dev/docs/known-issues/ )
- [Demo app (Symfony) and benchmarks ](https://github.com/dunglas/frankenphp-demo )
- [Go library documentation ](https://pkg.go.dev/github.com/dunglas/frankenphp )
- [Contributing and debugging ](https://frankenphp.dev/docs/contributing/ )
2022-11-01 08:48:55 +01:00
## Examples and Skeletons
2025-04-22 17:16:57 +02:00
- [Symfony ](https://github.com/dunglas/symfony-docker )
- [API Platform ](https://api-platform.com/docs/symfony )
- [Laravel ](https://frankenphp.dev/docs/laravel/ )
- [Sulu ](https://sulu.io/blog/running-sulu-with-frankenphp )
- [WordPress ](https://github.com/StephenMiracle/frankenwp )
- [Drupal ](https://github.com/dunglas/frankenphp-drupal )
- [Joomla ](https://github.com/alexandreelise/frankenphp-joomla )
- [TYPO3 ](https://github.com/ochorocho/franken-typo3 )
- [Magento2 ](https://github.com/ekino/frankenphp-magento2 )