Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
429 changes: 429 additions & 0 deletions docs/it/CONTRIBUTING.md

Large diffs are not rendered by default.

192 changes: 192 additions & 0 deletions docs/it/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# FrankenPHP: App Server moderno per PHP

<h1 align="center"><a href="https://frankenphp.dev"><img src="frankenphp.png" alt="FrankenPHP" width="600"></a></h1>

FrankenPHP è un server di applicazioni per PHP costruito sul server web [Caddy](https://caddyserver.com/).

FrankenPHP dà superpoteri alle app PHP grazie alle sue straordinarie funzionalità: [_Early Hints_](https://frankenphp.dev/docs/early-hints/), [modalità worker](https://frankenphp.dev/docs/worker/), [funzionalità in tempo reale](https://frankenphp.dev/docs/mercure/), [ricaricamento a caldo](https://frankenphp.dev/docs/hot-reload/), supporto automatico HTTPS, HTTP/2 e HTTP/3...

FrankenPHP funziona con qualsiasi app PHP e rende i progetti Laravel e Symfony più veloci che mai grazie alle loro integrazioni ufficiali con la modalità worker.

FrankenPHP può anche essere utilizzato come libreria Go autonoma per incorporare PHP in qualsiasi app utilizzando `net/http`.

[**Ulteriori informazioni** su _frankenphp.dev_](https://frankenphp.dev) e in questa presentazione:

<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>

## Iniziare

### Installare lo script

Su Linux e macOS, copiare questa riga nel terminale per installare automaticamente
una versione adatta alla piattaforma usata:

```console
curl https://frankenphp.dev/install.sh | sh
```

Su Windows, eseguire in PowerShell:

```powershell
irm https://frankenphp.dev/install.ps1 | iex
```

### Binario autonomo

Forniamo i binari FrankenPHP per Linux, macOS e Windows
con [PHP 8.5](https://www.php.net/releases/8.5/).

I binari Linux sono collegati staticamente, quindi possono essere utilizzati su qualsiasi distribuzione Linux senza installare alcuna dipendenza. Anche i file binari di macOS sono autonomi.
Contengono le estensioni PHP più popolari.
Gli archivi di Windows contengono il binario PHP ufficiale per Windows.

[Scaricare FrankenPHP](https://github.com/php/frankenphp/releases)

### Pacchetti rpm

I nostri manutentori offrono pacchetti rpm per tutti i sistemi che utilizzano `dnf`. Per installare, eseguire:

```console
sudo dnf install https://rpm.henderkes.com/static-php-1-0.noarch.rpm
sudo dnf module enable php-zts:static-8.5 # sono disponibili da 8.2 a 8.5
sudo dnf install frankenphp
```

**Installazione delle estensioni:** `sudo dnf install php-zts-<extension>`

Per le estensioni non disponibili per impostazione predefinita, utilizzare [PIE](https://github.com/php/pie):

```console
sudo dnf install pie-zts
sudo pie-zts install asgrim/example-pie-extension
```

### Pacchetti deb

I nostri manutentori offrono pacchetti deb per tutti i sistemi che utilizzano `apt`. Per installare, eseguire:

```console
VERSION=85 # sono disponibili da 82 a 85
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
sudo apt update
sudo apt install frankenphp
```

**Installazione delle estensioni:** `sudo apt install php-zts-<extension>`

Per le estensioni non disponibili per impostazione predefinita, utilizzare [PIE](https://github.com/php/pie):

```console
sudo apt install pie-zts
sudo pie-zts install asgrim/example-pie-extension
```

### Pacchetti apk

I nostri manutentori offrono pacchetti apk per tutti i sistemi che utilizzano `apk`. Per installare, eseguire:

```console
VERSION=85 # sono disponibili da 82 a 85
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
```

**Installazione delle estensioni:** `sudo apk add php-zts-<extension>`

Per le estensioni non disponibili per impostazione predefinita, utilizzare [PIE](https://github.com/php/pie):

```console
sudo apk add pie-zts
sudo pie-zts install asgrim/example-pie-extension
```

### Birra fatta in casa

FrankenPHP è disponibile anche come pacchetto [Homebrew](https://brew.sh) per macOS e Linux.

```console
brew install dunglas/frankenphp/frankenphp
```

**Installazione delle estensioni:** utilizzare [PIE](https://github.com/php/pie).

### Utilizzo

Per servire il contenuto della cartella corrente, eseguire:

```console
frankenphp php-server
```

Si possono anche eseguire script da riga di comando con:

```console
frankenphp php-cli /path/to/your/script.php
```

Per i pacchetti deb e rpm, si può anche avviare il servizio systemd:

```console
sudo systemctl start frankenphp
```

### Docker

In alternativa, sono disponibili [Immagini Docker](https://frankenphp.dev/docs/docker/):

```console
docker run -v .:/app/public \
-p 80:80 -p 443:443 -p 443:443/udp \
dunglas/frankenphp
```

Aprire `https://localhost` e buon divertimento!

> [!TIP]
>
> Non tentare di utilizzare `https://127.0.0.1`. Usare `https://localhost` e accettare il certificato autofirmato.
> Utilizzare la [variabile di ambiente `SERVER_NAME`](docs/config.md#environment-variables) per modificare il dominio da utilizzare.

## Documenti

- [Modalità classica](https://frankenphp.dev/docs/classic/)
- [Modalità worker](https://frankenphp.dev/docs/worker/)
- [Migrazione da Nginx/PHP-FPM](https://frankenphp.dev/docs/migrate/)
- [Supporto per Early Hints (codice di stato HTTP 103)](https://frankenphp.dev/docs/early-hints/)
- [Real time](https://frankenphp.dev/docs/mercure/)
- [Log](https://frankenphp.dev/docs/logging/)
- [Ricaricamento a caldo](https://frankenphp.dev/docs/hot-reload/)
- [Gestione efficiente di file statici di grandi dimensioni](https://frankenphp.dev/docs/x-sendfile/)
- [Configurazione](https://frankenphp.dev/docs/config/)
- [Scrittura delle estensioni PHP in Go](https://frankenphp.dev/docs/extensions/)
- [Immagini Docker](https://frankenphp.dev/docs/docker/)
- [Deploy in produzione](https://frankenphp.dev/docs/production/)
- [Ottimizzazione delle prestazioni](https://frankenphp.dev/docs/performance/)
- [Crea **app PHP autonome** e autoeseguibili](https://frankenphp.dev/docs/embed/)
- [Creare file binari statici](https://frankenphp.dev/docs/static/)
- [Compilare da sorgente](https://frankenphp.dev/docs/compile/)
- [Osservabilità](https://frankenphp.dev/docs/observability/)
- [Integrazione WordPress](https://frankenphp.dev/docs/wordpress/)
- [Integrazione Symfony](https://frankenphp.dev/docs/symfony/)
- [Integrazione Laravel](https://frankenphp.dev/docs/laravel/)
- [Problemi noti](https://frankenphp.dev/docs/known-issues/)
- [App demo (Symfony) e benchmark](https://github.com/dunglas/frankenphp-demo)
- [Documentazione della libreria Go](https://pkg.go.dev/github.com/dunglas/frankenphp)
- [Contributi e debug](https://frankenphp.dev/docs/contributing/)
- [Interni (panoramica dell'architettura)](docs/internals.md)

## Esempi e scheletri

- [Symfony](https://frankenphp.dev/docs/symfony/)
- [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)
11 changes: 11 additions & 0 deletions docs/it/classic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Usare la modalità classica

Senza alcuna configurazione aggiuntiva, FrankenPHP funziona in modalità classica. In questa modalità, FrankenPHP funziona come un tradizionale server PHP, servendo direttamente i file PHP. Ciò lo rende un sostituto perfetto per PHP-FPM o Apache con mod_php.

Similmente a Caddy, FrankenPHP accetta un numero illimitato di connessioni e utilizza un [numero fisso di thread](config.md#caddyfile-config) per servirle. Il numero di connessioni accettate e in coda è limitato solo dalle risorse di sistema disponibili.
Il pool di thread PHP funziona con un numero fisso di thread inizializzati all'avvio, paragonabile alla modalità statica di PHP-FPM. È anche possibile consentire ai thread di [ridimensionarsi automaticamente in fase di esecuzione](performance.md#max_threads), in modo simile alla modalità dinamica di PHP-FPM.

Le connessioni in coda attenderanno indefinitamente finché non sarà disponibile un thread PHP per servirle. Per evitarlo, si può utilizzare max_wait_time nella [configurazione](config.md#caddyfile-config) globale di FrankenPHP per limitare la durata di attesa di una richiesta per un thread PHP libero prima di essere rifiutata.
Inoltre, si può impostare un [timeout di scrittura](https://caddyserver.com/docs/caddyfile/options#timeouts) ragionevole.

Ogni istanza Caddy avvierà solo un pool di thread FrankenPHP, che sarà condiviso tra tutti i blocchi `php_server`.
133 changes: 133 additions & 0 deletions docs/it/compile.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Compilazione dai sorgenti

Questo documento spiega come creare un binario FrankenPHP che caricherà PHP come libreria condivisa.
Questo è il metodo consigliato.

In alternativa, è possibile creare anche [build completamente e prevalentemente statiche](static.md).

## Instalalre PHP

FrankenPHP è compatibile con PHP 8.2 e versioni successive.

### Con Homebrew (Linux e Mac)

Il modo più semplice per installare una versione di libphp compatibile con FrankenPHP è utilizzare i pacchetti ZTS forniti da [Homebrew PHP](https://github.com/shivammathur/homebrew-php).

Innanzitutto, se non lo hai già fatto, installa [Homebrew](https://brew.sh).

Quindi, installa la variante ZTS di PHP, Brotli (opzionale, per il supporto della compressione) e watcher (opzionale, per il rilevamento delle modifiche ai file):

```console
brew install shivammathur/php/php-zts brotli watcher
brew link --overwrite --force shivammathur/php/php-zts
```

### Compilare PHP

In alternativa, si può compilare PHP dai sorgenti con le opzioni necessarie a FrankenPHP, seguendo questi passaggi.

Per prima cosa, [recuperare i sorgenti PHP](https://www.php.net/downloads.php) ed estrarli:

```console
tar xf php-*
cd php-*/
```

Quindi, eseguire lo script `configure` con le opzioni necessarie per la propria piattaforma.
I seguenti flag `./configure` sono obbligatori, ma se ne possono aggiungerne altri, ad esempio, per compilare estensioni o funzionalità aggiuntive.

#### Linux e FreeBSD

```console
./configure \
--enable-embed \
--enable-zts \
--disable-zend-signals \
--enable-zend-max-execution-timers
```

#### Mac

Utilizzare il gestore pacchetti [Homebrew](https://brew.sh/) per installare le dipendenze obbligatorie e facoltative:

```console
brew install libiconv bison brotli re2c pkg-config watcher
echo 'export PATH="/opt/homebrew/opt/bison/bin:$PATH"' >> ~/.zshrc
```

Quindi eseguire lo script di configurazione:

```console
./configure \
--enable-embed \
--enable-zts \
--disable-zend-signals \
--with-iconv=/opt/homebrew/opt/libiconv/
```

#### Compilare PHP

Infine, compilare e installare PHP:

```console
make -j"$(getconf _NPROCESSORS_ONLN)"
sudo make install
```

## Installare dipendenze opzionali

Alcune funzionalità di FrankenPHP dipendono da dipendenze di sistema opzionali che devono essere installate.
In alternativa, queste funzionalità possono essere disabilitate passando i tag di build al compilatore Go.

| Caratteristica | Dipendenza | Crea tag per disabilitarlo |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------ | ----------------------- |
| Compressione Brotli | [Brotli](https://github.com/google/brotli) | nobrotli |
| Riavvia i worker alla modifica del file | [Osservatore C](https://github.com/e-dant/watcher/tree/release/watcher-c) | nessun osservatore |
| [Mercure](mercure.md) | [Libreria Mercure Go](https://pkg.go.dev/github.com/dunglas/mercure) (installata automaticamente, licenza AGPL) | nomercura |
Comment on lines +85 to +86

## Compilare l'app Go

Ora si può creare il file binario finale.

### Utilizzo di xcaddy

Il modo consigliato è utilizzare [xcaddy](https://github.com/caddyserver/xcaddy) per compilare FrankenPHP.
`xcaddy` consente inoltre di aggiungere facilmente [moduli Caddy personalizzati](https://caddyserver.com/docs/modules/) ed estensioni FrankenPHP:

```console
CGO_ENABLED=1 \
XCADDY_GO_BUILD_FLAGS="-ldflags='-w -s' -tags=nobadger,nomysql,nopgx" \
CGO_CFLAGS=$(php-config --includes) \
CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" \
xcaddy build \
--output frankenphp \
--with github.com/dunglas/frankenphp/caddy \
--with github.com/dunglas/mercure/caddy \
--with github.com/dunglas/vulcain/caddy \
--with github.com/dunglas/caddy-cbrotli
# Add extra Caddy modules and FrankenPHP extensions here
# optionally, if you would like to compile from your frankenphp sources:
# --with github.com/dunglas/frankenphp=$(pwd) \
# --with github.com/dunglas/frankenphp/caddy=$(pwd)/caddy

```

> [!TIP]
>
> Se stai usando musl libc (il valore predefinito su Alpine Linux) e Symfony,
> potrebbe essere necessario aumentare la dimensione dello stack predefinita.
> Altrimenti potresti ricevere errori come `PHP Fatal error: Maximum call stack size of 83360 bytes reached during compilation. Try splitting expression`
>
> Per fare ciò, cambiare la variabile d'ambiente `XCADDY_GO_BUILD_FLAGS` in qualcosa di simile
> `XCADDY_GO_BUILD_FLAGS=$'-ldflags "-w -s -extldflags \'-Wl,-z,stack-size=0x80000\'"'`
> (modificare il valore della dimensione dello stack in base alle esigenze dell'app).

### Senza xcaddy

In alternativa, è possibile compilare FrankenPHP senza `xcaddy` utilizzando direttamente il comando `go`:

```console
curl -L https://github.com/php/frankenphp/archive/refs/heads/main.tar.gz | tar xz
cd frankenphp-main/caddy/frankenphp
CGO_CFLAGS=$(php-config --includes) CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" go build -tags=nobadger,nomysql,nopgx
```
Loading
Loading