Saltar al contenido
FrankenPHP
Esc
↑↓navegar↵abrir⌘Jvista previa

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
  • Soporte nativo para
  • Drupal
  • Sulu
  • WordPress
  • Laravel
  • Symfony
  • API Platform
  • Magento

¡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

Modo Worker

The FrankenPHP mascot in a hard hat, driving an excavator

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.

Read the worker docs →

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 ✓
Documentación →

FrankenPHP de un vistazo

The FrankenPHP elephant and the Go gopher in a laboratory, lightning crackling between them
Go + C + PHP

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)
})
Use FrankenPHP as a Go library →

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!
Pruébalo
The FrankenPHP mascot hugging a big red heart

Need a hand? We've got heart.

Les-Tilleuls.coop, the cooperative behind FrankenPHP, helps teams migrate, host and speed up their PHP apps.