# Estensioni e impostazioni PHP

Source: https://support.kapsulehost.com/it-it/php-extensions-and-ini

Quali versioni e estensioni PHP offre il web hosting di KapsuleHost per WordPress, WooCommerce e siti PHP, quali impostazioni puoi modificare autonomamente e perché una modifica può richiedere fino a cinque minuti per diventare visibile.

I siti statici, Node.js e Python non eseguono PHP. Tutto ciò che riguarda PHP per un sito si trova in un unico posto: **Siti web**, clicca sul sito, **Impostazioni**, poi **PHP**. Quella pagina contiene il selettore della versione, le impostazioni che puoi modificare, un esecutore Composer e il log degli errori PHP.

![La pagina PHP di un sito in KPanel, con il selettore della versione e le impostazioni modificabili](https://support.kapsulehost.com/help/screenshots/php-extensions-and-ini.2214ab47.webp)

## Scegliere una Versione PHP

Sono selezionabili quattro versioni: **8.4, 8.3, 8.2 e 8.1**. I nuovi siti usano di default la 8.3.

Scegli la versione più recente effettivamente supportata dal tuo software. Un PHP più recente è notevolmente più veloce e riceve correzioni di sicurezza più a lungo. Il motivo per cui non conviene passare subito alla versione più nuova è la compatibilità: un plugin datato o un pezzo di codice personalizzato scritto anni fa può smettere completamente di funzionare su una versione su cui non è mai stato testato.

Per cambiarla, seleziona la versione e clicca su **Applica versione**. La modifica ha effetto immediato, senza bisogno di riavvii da parte tua e senza alcun tempo di inattività.

> **Tip:** Cambia la versione PHP prima nell'ambiente di staging, naviga nel sito per verificarne il funzionamento, e solo dopo applica la modifica in produzione. Se devi farlo direttamente in produzione, fallo in un momento in cui puoi monitorare il sito, sapendo che tornare indietro richiede un solo clic. Vedi [Ambienti di Staging](https://support.kapsulehost.com/it-it/staging-environments).

Se un cambio di versione manda in crash il sito, torna alla versione precedente e leggi il log. L'errore indicherà il nome del file che non è riuscito a essere eseguito. Vedi [Cambiare Versione PHP](https://support.kapsulehost.com/it-it/changing-php-version) e [Log degli Errori](https://support.kapsulehost.com/it-it/error-logs).

## Impostazioni Che Puoi Modificare

La pagina PHP espone cinque impostazioni tramite menu a tendina. Sono quelle che in pratica causano i problemi più comuni, motivo per cui sono messe in evidenza.

| Impostazione | Predefinito | Valori disponibili | Cosa controlla |
|---|---|---|---|
| `memory_limit` | 256M | 128M, 256M, 512M, 1024M, 2048M | Quanta memoria può usare una richiesta |
| `max_execution_time` | 30 | 30, 60, 120, 300, 600 | Per quanti secondi può essere eseguita una richiesta |
| `upload_max_filesize` | 64M | 16M, 32M, 64M, 128M, 256M | Il file singolo più grande caricabile |
| `post_max_size` | 65M | 17M, 33M, 65M, 129M, 257M | L'invio di modulo complessivo più grande |
| `max_input_vars` | 3000 | 1000, 3000, 5000, 10000 | Quanti campi può contenere un singolo invio |

Quale scegliere:

- **Caricamenti che falliscono oltre una certa dimensione**: aumenta `upload_max_filesize`, e `post_max_size` insieme a esso.
- **Un modulo esteso o un page builder che perde campi al salvataggio**: aumenta `max_input_vars`. Questo problema è invisibile e frustrante, perché non appare alcun errore. I campi in eccesso vengono scartati silenziosamente.
- **Una pagina che si interrompe a metà senza alcun errore**: aumenta `memory_limit`. Vedi [Limite di Memoria di WordPress](https://support.kapsulehost.com/it-it/wordpress-memory-limit).
- **Un'importazione o esportazione lunga che va in timeout**: aumenta `max_execution_time`, e valuta di eseguire l'operazione da riga di comando. Vedi [WP-CLI](https://support.kapsulehost.com/it-it/wordpress-wp-cli).

> **Note:** `post_max_size` deve essere più grande di `upload_max_filesize`, perché il caricamento viaggia all'interno del post. Se scegli una combinazione in cui questo non avviene, la piattaforma corregge `post_max_size` aumentandolo automaticamente. Per questo motivo potresti vedere un valore che non hai scelto tu.

## Perché Una Modifica Richiede Fino a Cinque Minuti

Questa è la fonte di confusione più comune su questa pagina, quindi vale la pena essere precisi.

Le tue impostazioni vengono scritte in un file `.user.ini` nella document root del tuo sito. PHP legge quel file e poi **lo mette in cache per 300 secondi**, ovvero cinque minuti. Fino alla scadenza di quella cache, PHP continua a usare i valori precedenti.

Quindi, dopo aver salvato una modifica:

- La pagina continuerà a mostrare il vecchio limite per un massimo di cinque minuti.
- `phpinfo()` continuerà a mostrare il vecchio limite per un massimo di cinque minuti.
- Un aggiornamento forzato della pagina non aiuta. Nemmeno la cancellazione della cache del browser.
- Non devi riavviare nulla, e non puoi farlo. Basta aspettare.

Se sono passati più di cinque minuti e il valore non è cambiato, allora c'è effettivamente un problema ed è il caso di aprire un ticket.

## Modificare Manualmente `.user.ini`

Puoi modificare direttamente `.user.ini` via SFTP o SSH se preferisci, oppure se hai bisogno di una direttiva che il pannello non espone. Si trova nella document root del tuo sito. Vedi [Accesso SFTP](https://support.kapsulehost.com/it-it/sftp-access).

Il formato prevede una direttiva per riga:

```ini
memory_limit = 512M
max_execution_time = 120
```

Due limiti importanti su cosa può fare `.user.ini`:

**Funziona solo per le direttive che PHP consente di impostare per directory o per utente.** Le cinque indicate sopra rientrano tutte in questa categoria. Le direttive impostabili solo a livello di sistema, come `disable_functions` o il caricamento di un'estensione con `extension=`, vengono ignorate in un file `.user.ini`. Non generano errori, semplicemente non fanno nulla, ed è per questo che molti ci passano un intero pomeriggio.

**Il pannello legge solo chiavi semplici.** Le direttive contenenti un punto, come `opcache.enable` o `date.timezone`, vengono rispettate da PHP ma non appariranno nel modulo del pannello. Se ne imposti una manualmente e in seguito modifichi qualcosa tramite il pannello, controlla il file in seguito.

> **Warning:** Il web hosting di KapsuleHost utilizza nginx, non Apache. I file `.htaccess` non vengono letti da nessuno. Le direttive PHP inserite in un file `.htaccess`, come `php_value memory_limit`, non hanno assolutamente alcun effetto qui. Usa invece `.user.ini` oppure il pannello. Vedi [WordPress e .htaccess](https://support.kapsulehost.com/it-it/wordpress-htaccess).

## Quali Estensioni Sono Disponibili

La build standard è ampia e include tutto ciò che WordPress, WooCommerce e la maggior parte delle applicazioni PHP richiedono.

**Database**: `mysqli`, `pdo_mysql`, `sqlite3`, `pdo_sqlite`
**Immagini**: `gd`, `imagick`, `exif`
**Cache**: `Zend OPcache`, `redis`, `memcached`
**Testo e locale**: `mbstring`, `iconv`, `intl`, `gettext`, `ctype`
**XML e dati**: `dom`, `simplexml`, `xml`, `xmlreader`, `xmlwriter`, `xsl`, `json`
**Rete**: `curl`, `soap`, `sockets`, `ftp`, `openssl`
**Matematica e crittografia**: `bcmath`, `sodium`, `hash`, `random`
**File e sistema**: `fileinfo`, `zip`, `zlib`, `phar`, `posix`, `pcntl`, `shmop`, `calendar`, `tokenizer`

Una differenza tra versioni che vale la pena conoscere: l'estensione `imap` è presente sulla 8.3 e versioni precedenti ma non sulla 8.4, perché è stata rimossa da PHP stesso in quella release. Se hai un'applicazione che ne ha ancora bisogno, resta sulla 8.3 oppure sposta quell'applicazione su una libreria di posta moderna.

**Non installati**: driver PostgreSQL, MongoDB, Xdebug, `mcrypt`, e caricatori di codice commerciali come ionCube e SourceGuardian.

Non puoi abilitare o disabilitare estensioni autonomamente dal pannello. Se la tua applicazione richiede qualcosa che non è presente nell'elenco, apri un ticket e descrivi cosa stai eseguendo. La possibilità di aggiungerla dipende dall'estensione. Vedi [Apertura di un Ticket di Supporto](https://support.kapsulehost.com/it-it/opening-a-support-ticket).

## Verificare Cosa È Effettivamente Caricato

Invece di tirare a indovinare:

- **Su WordPress**: Strumenti, poi Salute del sito, poi Informazioni, poi Server. Elenca la versione PHP e i limiti pertinenti.
- **Via SSH**: `php -v` per la versione e `php -m` per le estensioni caricate. Vedi [Aggiungere Chiavi SSH](https://support.kapsulehost.com/it-it/adding-ssh-keys).

> **Warning:** Non lasciare un file `phpinfo()` nella root web. Rende pubblici i tuoi percorsi, le tue estensioni e la tua configurazione a chiunque lo trovi, e gli scanner automatici cercano esattamente quel nome di file. Se ne crei uno per verificare qualcosa, eliminalo subito dopo.

## Guide Correlate

- [Cambiare Versione PHP](https://support.kapsulehost.com/it-it/changing-php-version)
- [Limite di Memoria di WordPress](https://support.kapsulehost.com/it-it/wordpress-memory-limit)
- [Log degli Errori](https://support.kapsulehost.com/it-it/error-logs)
- [Codici di Errore HTTP](https://support.kapsulehost.com/it-it/http-error-codes)
- [Lentezza del Sito e Limiti di Risorse](https://support.kapsulehost.com/it-it/site-slow-resource-limits)
- [WordPress e .htaccess](https://support.kapsulehost.com/it-it/wordpress-htaccess)
- [Glossario dell'Hosting](https://support.kapsulehost.com/it-it/glossary)
