Pular para o conteúdo
FrankenPHP
Esc
↑↓navegar↵abrir⌘Jpré-visualizar

O servidor de aplicações PHP moderno, escrito em Go

FrankenPHP é um novo servidor de aplicações para aplicações PHP (construído sobre o Caddy) e uma biblioteca para incorporar o interpretador PHP em servidores web Go.

curl https://frankenphp.dev/install.sh | sh
Comece
  • Suporte nativo a
  • Drupal
  • Sulu
  • WordPress
  • Laravel
  • Symfony
  • API Platform
  • Magento

Comece!

Tenha um servidor PHP de nível de produção instalado e funcionando com apenas um comando!

# Instala o FrankenPHP no Linux ou macOS
curl https://frankenphp.dev/install.sh | sh

# Ou no Windows, com PowerShell
irm https://frankenphp.dev/install.ps1 | iex

# Serve o diretório public/
frankenphp php-server -r public/

# Executa um script de linha de comando
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

    Inicie sua aplicação uma vez e ela permanece na memória!

  • Direto

    Suportado nativamente pelo Symfony, API Platform, Laravel...

  • Simples

    Usa superglobais simples: não precisa de PSR-7.

  • Rápido

    De acordo com nossos benchmarks, 3,5x mais rápido que o FPM em aplicações da API Platform.

  • Eficiente

    O FrankenPHP foi escrito em Go e C. Ele conta com o recurso icônico do Go: goroutines!

  • Opcional

    Sua aplicação pode ser servida como está, mesmo que não seja compatível com o modo worker.

  • Fácil implantação

    Executa em processo: um binário, nenhum serviço externo necessário.

  • Watcher

    Reinicie automaticamente o worker sempre que seu código for alterado.

Read the worker docs →

Caddyfile

localhost {
    # Habilita a compressão (opcional)
    encode zstd br gzip
    # Executa arquivos PHP no diretório atual e serve os assets
    php_server
}

Tão fácil de configurar!

Três linhas de configuração: agora isso é tudo o que você precisa para iniciar um servidor PHP de nível de produção (HTTPS automático, HTTP/3, compressão zstd...), desenvolvido com Caddy.

  • HTTPS ✓
  • HTTP/3 ✓
  • zstd · br · gzip ✓
  • Early Hints ✓
Documentação →

FrankenPHP em resumo

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 mais moderno do que nunca!

  • Utiliza o executor PHP oficial incorporado em um servidor web de última geração: Caddy
  • Suporte nativo a HTTP/1.1, HTTP/2 e HTTP/3
  • Geração e renovação automática de certificados HTTPS (Let's Encrypt ou ZeroSSL)
  • Copie seus arquivos PHP para o diretório raiz, só isso!
  • Crie binários independentes, autoexecutáveis e sem dependências para suas aplicações web PHP e ferramentas de linha de comando.
  • Extensões PHP populares, incluindo OPcache e XDebug, têm suporte nativo!
Experimente
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.