Le serveur d'applications PHP moderne, écrit en Go
FrankenPHP est un nouveau serveur d'applications pour les applications PHP (construit sur la base de Caddy) et une bibliothèque permettant d'incorporer l'interpréteur PHP dans les serveurs web Go.
curl https://frankenphp.dev/install.sh | shCommencez dès maintenant !
Lancez un serveur PHP de haute qualité en production en une simple commande !
# Installer FrankenPHP sous Linux ou macOS
curl https://frankenphp.dev/install.sh | sh
# Ou sous Windows, avec PowerShell
irm https://frankenphp.dev/install.ps1 | iex
# Servir le répertoire public/
frankenphp php-server -r public/
# Exécuter un script en ligne de commande
frankenphp php-cli script.php# Servir le répertoire public/
docker run -v $PWD:/app/public \
-p 443:443/tcp -p 443:443/udp \
dunglas/frankenphp
# Exécuter un script en ligne de commande
docker run -v $PWD:/app \
dunglas/frankenphp php script.phpAnatomy of a modern PHP server.
Every part was stitched on for a reason. Here's what keeps the creature alive.
The bolts
Automatic HTTPS
Certificates issued, renewed and revoked for you, with Let's Encrypt or ZeroSSL.
The brain
Worker mode
Boots your app once and keeps it in memory, ready in milliseconds.
The stitches
Caddy inside
The official PHP executor sewn into Caddy, with every Caddy module at hand.
One binary. No PHP-FPM.
Mode Worker
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();
}Script Worker
Démarrez votre application une fois, elle reste en mémoire !
Direct
Pris en charge nativement par Symfony, API Platform, Laravel...
Simple
Utilise les superglobales classiques : pas besoin de PSR-7.
Rapide
3,5 fois plus rapide que FPM sur les applications API Platform selon nos benchmarks.
Efficace
FrankenPHP est écrit en Go et C. Il s'appuie sur la fonctionnalité emblématique de Go : les goroutines !
Optionnel
Votre application peut être servie telle quelle, même si elle n'est pas compatible avec le mode worker.
Déploiement facile
Fonctionne en processus : un binaire, aucun service externe nécessaire.
Watcher
Le worker redémarre à chaque changement de votre code.
Caddyfile
localhost {
# Activer la compression (optionnel)
encode zstd br gzip
# Exécuter les fichiers PHP dans le répertoire courant et servir les ressources
php_server
}Une simplicité de configuration
Trois lignes de configuration : c'est tout ce dont vous avez besoin pour démarrer un serveur PHP de niveau production (HTTPS automatique, HTTP/3, compression Brotli...), alimenté par Caddy.
- HTTPS ✓
- HTTP/3 ✓
- zstd · br · gzip ✓
- Early Hints ✓
FrankenPHP en un aperçu
Extensible
Compatible avec PHP 8.2+, la plupart des extensions PHP et tous les modules Caddy.
Un seul service
Conçu dans un souci de simplicité : un seul service, un seul binaire ! FrankenPHP n'a pas besoin de PHP-FPM, il utilise son propre SAPI spécialement conçu pour les serveurs web Go.
Déploiement facile
Application Cloud Native fournie comme une image Docker. Compatible avec Kubernetes et toutes les plateformes Cloud modernes. Il est également possible de packager votre application PHP comme un binaire statique autonome et auto-exécutable.
Mode worker
Démarrez votre application une fois et gardez-la en mémoire ! Elle est prête à gérer les requêtes entrantes en quelques millisecondes.
103 Early Hints
Les Early Hints améliorent le temps de chargement des sites web de 30%. FrankenPHP est le seul SAPI PHP avec support des Early Hints !
Temps réel
Hub Mercure intégré. Envoyez des événements depuis vos applications PHP vers tous les navigateurs connectés, ils reçoivent instantanément la charge utile comme un événement JavaScript !
Compression Brotli, Zstandard et Gzip
Les formats de compression modernes sont pris en charge nativement.
Logs structurés
Apporte un format plus défini et des détails à vos logs.
Métriques Prometheus et traçage
Support de Prometheus intégré !
HTTP/2 & HTTP/3
Support natif pour HTTPS, HTTP/2 et HTTP/3.
Automatisation HTTPS
Génération, renouvellement et révocation automatiques des certificats HTTPS.
Rechargement fluide
Déployez vos applications sans aucun temps d'arrêt grâce aux rechargements en douceur.
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)
})Plus moderne que jamais !
- Utilise l'exécuteur PHP officiel intégré dans un serveur web de pointe : Caddy
- Support natif pour HTTP/1.1, HTTP/2 et HTTP/3
- Génération et renouvellement automatiques des certificats HTTPS (Let's Encrypt ou ZeroSSL)
- Copie vos fichiers PHP dans la racine du document, et c'est tout !
- Crée des binaires autonomes, auto-exécutables et sans dépendances pour vos applications web PHP, et outils en ligne de commande.
- Les extensions PHP les plus populaires, incluant OPcache et XDebug, sont nativement supportées.
Need a hand? We've got heart.
Les-Tilleuls.coop, the cooperative behind FrankenPHP, helps teams migrate, host and speed up their PHP apps.