El Servidor de Aplicaciones PHP Moderno, escrito en Go
FrankenPHP es un nuevo servidor de aplicaciones para aplicaciones PHP (construido sobre Caddy) y una biblioteca para incrustar el intérprete de PHP en servidores web Go.
curl https://frankenphp.dev/install.sh | sh¡Empieza ahora!
¡Obtén un servidor PHP de nivel de producción en funcionamiento con un solo comando!
# Instala FrankenPHP en Linux o macOS
curl https://frankenphp.dev/install.sh | sh
# O en Windows, con PowerShell
irm https://frankenphp.dev/install.ps1 | iex
# Sirve el directorio public/
frankenphp php-server -r public/
# Ejecuta un script de línea de comandos
frankenphp php-cli script.php# Sirve el directorio public/
docker run -v $PWD:/app/public \
-p 443:443/tcp -p 443:443/udp \
dunglas/frankenphp
# Ejecuta un script de línea de comandos
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.
Modo 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
Inicia tu aplicación una vez, ¡permanece en memoria!
Directoy sencillo
Compatible nativamente con Symfony, API Platform, Laravel...
Simple
Utiliza las superglobales tradicionales: no es necesario PSR-7.
Rápido
Según nuestros benchmarks, 3.5 veces más rápido que FPM en aplicaciones API Platform.
Eficiente
FrankenPHP está escrito en Go y C. ¡Se basa en la característica icónica de Go: las goroutines!
Opcional
Tu aplicación puede ser servida tal cual, incluso si no es compatible con el modo Worker.
Fácil despliegue
Se ejecuta en proceso: un binario, no se necesita ningún servicio externo.
Watcher
Reinicia automáticamente los workers cada vez que tu código cambia.
Caddyfile
localhost {
# Habilitar compresión (opcional)
encode zstd br gzip
# Ejecutar archivos PHP en el directorio actual y servir activos
php_server
}¡Tan fácil de configurar!
Tres líneas de configuración: es todo lo que necesitas para iniciar un servidor PHP de nivel de producción (HTTPS automático, HTTP/3, compresión zstd...), impulsado por Caddy.
- HTTPS ✓
- HTTP/3 ✓
- zstd · br · gzip ✓
- Early Hints ✓
FrankenPHP de un vistazo
Extensible
Compatible con PHP 8.2+, la mayoría de las extensiones de PHP y todos los módulos de Caddy.
Solo un servicio
Diseñado con simplicidad en mente: ¡solo un servicio, solo un binario! FrankenPHP no necesita PHP-FPM, utiliza su propia SAPI especialmente diseñada para servidores web Go.
Fácil despliegue
Aplicación Cloud Native enviada como una imagen Docker. Compatible con Kubernetes y todas las plataformas modernas en la nube. También es posible empaquetar tu aplicación PHP como un binario estático independiente y autoejecutable.
Modo Worker
Inicia tu aplicación una vez y manténla en memoria. Está lista para manejar solicitudes entrantes en unos pocos milisegundos.
103 Early Hints
Early Hints es una nueva característica de la plataforma web que puede mejorar los tiempos de carga del sitio web en un 30%. ¡FrankenPHP es la única SAPI de PHP con soporte para Early Hints!
Tiempo real
Hub Mercure integrado. Envía eventos desde tus aplicaciones PHP a todos los navegadores conectados, ¡reciben instantáneamente la carga útil como un evento de JavaScript!
Compresión Brotli, Zstandard y Gzip
Los formatos de compresión modernos son compatibles de forma inmediata.
Registro estructurado
Aporta un formato más definido y detalles a tu registro.
Métricas de Prometheus y trazado
¡Soporte integrado para Prometheus!
HTTP/2 & HTTP/3
Soporte nativo para HTTPS, HTTP/2 y HTTP/3.
Automatización HTTPS
Generación, renovación y revocación automática de certificados HTTPS.
Recarga elegante
Implementa tus aplicaciones sin tiempo de inactividad gracias a las recargas elegantes.
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)
})PHP más moderno que nunca!
- Utiliza el ejecutor oficial de PHP integrado en un servidor web de última generación: Caddy
- Soporte nativo para HTTP/1.1, HTTP/2 y HTTP/3
- Generación y renovación automática de certificados HTTPS (Let's Encrypt o ZeroSSL)
- ¡Copia tus archivos PHP en el directorio raíz del documento, eso es todo!
- Construye binarios independientes, autoejecutables y sin dependencias para tus aplicaciones web PHP y herramientas de línea de comandos.
- ¡Las extensiones populares de PHP, incluyendo OPcache y XDebug, son compatibles de forma nativa!
Need a hand? We've got heart.
Les-Tilleuls.coop, the cooperative behind FrankenPHP, helps teams migrate, host and speed up their PHP apps.