Installare PHP su Ubuntu sembra semplice, poiché i pacchetti sono sempre disponibili sui repository ufficiali della distribuzione. Ma attenzione! Senza qualche accortezza in più, rischiamo di ottenere una vecchia versione (come l'obsoleto PHP 7) oppure configurare il sistema con il vetusto mod_php al posto del più moderno ed efficiente PHP-FPM. Vediamo allora come installare PHP su Linux Ubuntu Desktop o Server e interfacciare il server web tramite PHP-FPM

Trattazione aggiornata per funzionare al meglio con PHP 8.3 e Ubuntu 22.04

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

In questo articolo ci concentreremo, nello specifico, sull'installazione di PHP su Ubuntu (Linux). Per la guida equivalente incentrata su Windows, fai riferimento a quest'altro approfondimento dedicato:

» Leggi: La Grande Guida ad Apache, MySQL, PHP

La procedura seguente è stata testata su Ubuntu 22.04 LTS e Ubuntu 20.04 LTS (sia "Desktop", sia "Server"), ma è analoga per tutte le distribuzioni derivate (fra le quali "Mint") e, presumibilmente, per le iterazioni successive. È invece incompatibile con le versioni non-LTS, poiché lo sviluppatore del pacchetto PHP aggiornato non le supporta.

Una stesura precedente di questa guida (archiviata qui) trattava anche CentOS, mentre oggi è focalizzata unicamente su Ubuntu.

Prima di installare PHP: il server web è necessario

Prima di iniziare a impartire comandi è opportuno ricordare come funziona il flusso di richiesta e risposta di una "pagina PHP":

  1. il browser web del visitatore invia la richiesta al server che ospita il sito che l'utente vuole visualizzare
  2. su tale server è in esecuzione un programma, detto "server web", che è in grado di elaborare la richiesta. Esempi di programmi di questo tipo sono Apache HTTP Server (impropriamente chiamato soltanto "Apache") oppure NGINX
  3. il server web comunica con l'interprete PHP per elaborare la pagina richiesta
  4. l'interprete PHP esegue il codice PHP della pagina, che può prevedere logiche per la lettura/scrittura da un database, la gestione dei cookie, la sessione utente o l'accesso a risorse esterne
  5. l'interprete PHP restituisce al server web la pagina elaborata, sottoforma di HTML
  6. il server web invia detta pagina HTML al visitatore
  7. il browser web del visitatore legge la pagina HTML ricevuta e la mostra
  8. in caso la pagina HTML includa altre risorse, come immagini, fogli di stile o file javascript, li richiede al server web
  9. il server web restituisce tali risorse al browser del visitatore, che le mostra nella pagina

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM) - Diagramma server web con backend PHP

Tale flusso è volutamente semplificato (non abbiamo parlato di DNS, indirizzi IP, router e porte TCP) ma è funzionale alla trattazione corrente. Il concetto-chiave da capire è che il browser web del visitatore non interagisce direttamente con la pagina PHP, ma solamente con il software impiegato come server web. Di conseguenza: prima di installare PHP è necessario installare detto server web. Abbiamo proposto le guide passo passo in questo approfondimento:

» Leggi: Installare e configurare un server web: La Grande Guida ad Apache/Nginx, PHP, MySQL su Windows e Linux

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Gli esperti potrebbero obbiettare che l'eseguibile di PHP integra già un proprio server web (lo si avvia con il comando php -S localhost). Ma, come ricorda la documentazione, è progettato unicamente come supporto allo sviluppo. Raccomando di ignorarlo e installare subito Apache o NGINX anche nell'ambiente di sviluppo, di modo da replicare fedelmente la stessa situazione che troverai in seguito sul server di produzione.

Ciò chiarito, entriamo nel vivo dell'installazione.

Installare PHP 8 su Ubuntu: Aprire il Terminale

Se stai lavorando via SSH oppure su Ubuntu Server sei già davanti alla linea di comando, quindi prosegui oltre.

Se però ti trovi in un ambiente grafico, devi avviare il Terminale: il mio metodo preferito è tramite la combinazione da tastiera Ctrl+Alt+T. In alternativa:

  1. clicca sul pulsante con i 3x3 punti in basso a sinistra
  2. digita terminale
  3. clicca sul collegamento mostrato

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM) - linux apri terminale

» Leggi anche: Come aprire il terminale di Ubuntu

Installare PHP 8 su Ubuntu: Installazione completamente automatica

Da questa situazione, puoi installare PHP su Ubuntu in modo completamente automatico impartendo il comando appropriato alla versione che desideri ottenere:

  • PHP 8.3: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=8.3 bash
  • PHP 8.2: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=8.2 bash
  • PHP 8.1: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=8.1 bash

Al momento in cui scrivo, PHP 8.1, 8.2 e 8.3 sono le uniche versioni ancora supportate dal team di sviluppo di PHP. Questo implica che tutte le versioni precedenti non ricevono più aggiornamenti di sicurezza, e dovrebbero davvero essere evitate. In caso ciò non fosse possibile a causa di problemi di compatibilità, i comandi presentati di seguito sono perfettamente funzionanti, e consentono di installare le vecchie versioni di PHP su Ubuntu:

  • PHP 8.0: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=8.0 bash
  • PHP 7.4: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=7.4 bash
  • PHP 7.3: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=7.3 bash
  • PHP 7.2: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=7.2 bash
  • PHP 7.1: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=7.1 bash
  • PHP 7.0: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=7.0 bash
  • PHP 5.6: sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/php/install.sh?$(date +%s) | sudo PHP_VER=5.6 bash

In caso fosse richiesta la password dopo aver lanciato il comando, digita quella del tuo utente Linux (quella che usi per eseguire login al sistema)

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Nota l'uso della variabile PHP_VER presente verso la fine del comando: è quella che determina quale versione di PHP deve essere installata. La generazione più vecchia ancora disponibile è PHP 5.6.... ma è veramente vecchissima, fuori supporto da molti anni e dovresti evitarla in favore di una generazione più recente, se il tuo progetto è compatibile.

Il comando appena impartito esegue uno script (visualizzabile qui) che svolge in sequenza tutte le tediose operazioni che, altrimenti, dovremmo impartire manualmente (vedi seguito dell'articolo).

Una nota importante: se hai utilizzato lo script in un ambiente di sviluppo (il tuo PC di lavoro, ad esempio), dovresti manualmente eliminare il file di configurazione di OPcache con il seguente comando:

export PHP_VER=8.3 && rm -f /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-opcache.ini && service php${PHP_VER}-fpm restart

Per maggiori informazioni, vedi il Passo dedicato a OPcache proposto più sotto.

Nei prossimi paragrafi vedremo la procedura alternativa per svolgere manualmente gli stessi passaggi che lo script ha eseguito automaticamente. Se hai usato lo script, puoi saltare tutto e riprendere dal Passo 14: Riavviare il servizio php-fpm.

Installare PHP 8 su Ubuntu, Passo 1: Diventare root

La procedura tramite script descritta ai paragrafi precedenti installa PHP su Ubuntu automaticamente ed è la modalità che, personalmente, raccomando. Se però preferisci installare PHP manualmente, puoi ottenere un risultato analogo seguendo i passaggi presentati di seguito.

Per prima cosa, devi acquisire i privilegi massimi diventando root. Il comando è:

sudo -s

In caso ti fosse richiesta la password, digita quella del tuo utente Linux (quella che usi per eseguire login al PC)

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

» Leggi anche: Sudo senza password con Ubuntu: come disabilitare la richiesta di password quando si eseguono comandi come root (video)

Installare PHP 8 su Ubuntu, Passo 3: Disinstallare... PHP

Prima di proseguire, è opportuno verificare che PHP non sia già stato installato, magari per errore. Il modo più efficace di farlo è tramite il gestore dei pacchetti:

dpkg --list | grep php

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Se il comando non mostra alcuna risposta, puoi tranquillamente andare oltre perché PHP non è installato. In caso contrario, è fondamentale disinstallare il pacchetto corrente:

apt purge --auto-remove php* -y

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Raccomando caldamente di eliminare anche eventuali file di configurazione relativi alla precedente installazione, di modo da partire con una situazione pulita:

rm -rf /etc/php

A questo punto, è doverosa una precisazione "avanzata" importante: tecnicamente, è possibile installare molteplici versioni di PHP contemporaneamente. Questo è utile, ad esempio, se lo stesso server eroga molteplici siti che richiedono, per motivi di compatibilità, versioni di PHP differenti. I due comandi appena mostrati, invece, rimuovono tutte le versioni e tutte le configurazioni, che è la scelta migliore per partire da una situazione completamente pulita. Se però hai bisogno di installare due versioni di PHP contemporaneamente, qui vorrai disinstallare unicamente la specifica versione di PHP che stai per installare ora. Allo scopo, puoi modificare e concatenare i due comandi precedenti in questo modo:

export PHP_VER=8.3 && apt purge --auto-remove php${PHP_VER}* -y && rm -rf /etc/php${PHP_VER}

Nota l'uso della variabile PHP_VER ad inizio comando: è quella che determina quale specifica versione di PHP deve essere rimossa, e devi valorizzarla con la specifica versione di PHP che andrai ad installare fra poco.

Installare PHP 8 su Ubuntu, Passo 4: Aggiungere i repository di PHP

Prima di procedere con l'installazione, è bene ricordare una dinamica importante di Ubuntu, simile anche per tutte le altre distribuzioni. Canonical, cioè l'azienda che ne sovraintende lo sviluppo, rende disponibile nei repository ufficiali una specifica versione di PHP: l'ultima indicata come "stabile" al momento di rilascio del sistema operativo. Queste, ad esempio, sono le versioni di PHP rese disponibili nei repository ufficiali delle ultime generazioni di Ubuntu "a supporto esteso" (LTS):

  • Ubuntu 22.04 --> PHP 8.1
  • Ubuntu 20.04 --> PHP 7.4
  • Ubuntu 18.04 --> PHP 7.2

Da lì, non si avanza mai: ecco dunque che le generazioni nate ai tempi di PHP 5.6 ricevevano aggiornamenti solo per il ramo 5.6.x, senza mai offrire PHP 7.0 o successivi. Lo stesso dicasi per quelle che debuttarono in concomitanza di PHP 7.0: gli update minori (7.0.xx) venivano immediatamente pubblicati, mentre PHP 7.1, PHP 7.2 e successivi non venivano mai resi disponibili sui repository ufficiali

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Fonte immagine: PHP Supported Versions

Questo approccio è assolutamente condivisibile: consente infatti di prevenire le numerose incompatibilità che si presentano fra le applicazioni web pre-esistenti e le nuove versioni di PHP. Il rovescio della medaglia è che, in caso la nostra webapp fosse perfettamente aggiornata e compatibile con le nuove versioni di PHP, ci ritroveremmo a farla girare con un interprete vecchio di mesi o anni.

Come ovviare, dunque? Semplice: basta evitare i repository ufficiali e installare le nuove versioni di PHP da quelli di terze parti. Il lungo comando seguente "aggancia" il repository di Ondrey Sury, uno sviluppatore che svolge questo importantissimo lavoro da molti anni:

apt update && apt install software-properties-common -y && LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -y

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Installare PHP 8 su Ubuntu, Passo 5: Installare PHP e PHP-FPM su Ubuntu

Arrivati fino a qui abbiamo solo "agganciato" i repository esterni che offrono le versioni aggiornate di PHP per Ubuntu. Procediamo ora a sfruttarli per installare PHP e PHP-FPM (FastCGI Process Manager). PHP-FPM è una modalità nella quale PHP viene eseguito come servizio indipendente, con il quale poi il server web si interfaccia tramite il protocollo FastCGI. Il tutto è leggermente più complesso da installare rispetto alla modalità tradizionale (ovvero: interprete PHP caricato come modulo per il server web), ma garantisce stratosferici benefici in termini di minor occupazione di RAM, scalabilità (diviene possibile eseguire il server web su un server e PHP-FPM su di un altro), stabilità, separazione dei compiti e molto altro ancora.

Per installare PHP 8 e PHP-FPM su Ubuntu eseguire questo comando:

apt update && export PHP_VER=8.3 && apt install php${PHP_VER} php${PHP_VER}-fpm php${PHP_VER}-cli php${PHP_VER}-common php${PHP_VER}-mbstring php${PHP_VER}-gd php${PHP_VER}-intl php${PHP_VER}-xml php${PHP_VER}-zip php${PHP_VER}-mysqlnd php${PHP_VER}-curl php${PHP_VER}-imagick -y

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Come evidente, insieme a PHP abbiamo installato anche i moduli più comuni, necessari un po' in tutte le situazioni.

La variabile PHP_VER=8.3, valorizzata nel comando di cui sopra, fa sì che venga installato PHP 8.3.xx, ovvero la versione più aggiornata del ramo "8.3" disponibile. Se la tua applicazione non è compatibile e necessita di una versione precedente, valorizza tale variabile di conseguenza prima di lanciare il comando:

  • PHP_VER=8.2
  • PHP_VER=8.1
  • PHP_VER=8.0
  • PHP_VER=7.4
  • PHP_VER=7.3
  • PHP_VER=7.2
  • PHP_VER=7.1
  • PHP_VER=7.0
  • PHP_VER=5.6

Nota che il supporto a PHP 8.0 e versioni precedenti è definitivamente terminato: non usciranno nuove versioni minori di questi rami, nemmeno in caso si rendessero necessarie per correggere problemi di sicurezza. Di conseguenza, queste vecchie generazioni non dovrebbe essere usate, se non in caso di assoluta necessità.

La prossima versione a cui sarà interrotto il supporto è PHP 8.1 (25 Novembre 2024), seguito da PHP 8.2 (8 Dicembre 2025). È sempre bene tenere d'occhio questa pagina per conoscere lo stato del supporto delle varie versioni di PHP.

Installare PHP 8 su Ubuntu, Passo 6: Testare l'installazione dei pacchetti PHP

Ora verifica che l'installazione sia andata a buon fine impartendo php -v: se tutto è andato per il verso giusto, verrà visualizza la versione di PHP appena installata

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Installare PHP 8 su Ubuntu, Passo 7: Modificare l'impostazione cgi.fix_pathinfo

Questa impostazione è incompatibile con Prestashop (grazie Alice per la segnalazione).

PHP-FPM comprende una funzione, attiva di default, che lo rende maggiormente compatibile con il protocollo FastCGI. Per la massima sicurezza, è però raccomandabile (fonte1, fonte2, fonte3) disabilitare la relativa opzione (cgi.fix_pathinfo). Per farlo nel modo ottimale, evitando cioè conflitti durante l'installazione futura degli aggiornamenti, scarichiamo un file di configurazione dedicato (disponibile qui) nella cartella preposta alle configurazioni di PHP-FPM:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-no-cgi.fix_pathinfo.ini https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/no-cgi.fix_pathinfo.ini

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Ancora una volta: attenzione a modificare il valore della variabile PHP_VER= a seconda della versione di PHP installata al Passo precedente.

Come alternativa sub-ottimale, puoi svolgere la stessa modifica al file di configurazione principale, php.ini, tramite un editor di testo. Apri il file di configurazione di PHP-FPM:

export PHP_VER=8.3 && apt install nano -y && nano /etc/php/${PHP_VER}/fpm/php.ini

» Leggi anche: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")

Modifica dunque la riga che recita:

;cgi.fix_pathinfo=1

Bisogna rimuovere il ; iniziale e portare il valore a 0:

cgi.fix_pathinfo=0

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM) - fix_pathinfo-secured

Salva e chiudi battendo da tastiera Ctrl+O, poi Invio, poi Ctrl+X.

Installare PHP 8 su Ubuntu, Passo 8: memory_limit e sessioni

Proseguiamo la configurazione impostando la dimensione massima di file accettata in upload, il limite alla quantità di memoria allocabile da una singolo script PHP (il famigerato memory_limit) e la configurazione sicura delle sessioni (documentata qui). Per ottenere tutto questo rapidamente è sufficiente scaricare un file di configurazione già pronto all'uso (disponibile qui) direttamente nella cartella delle configurazioni:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-custom.ini https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/php-custom.ini

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Installare PHP 8 su Ubuntu, Passo 9: Disattivazione di exec()

Per motivi di sicurezza, stra-raccomando di disattivare le funzioni di esecuzione (exec(), passthru(), shell_exec(), system() ecc.) da PHP-FPM. Servono a lanciare programmi esterni tramite PHP, ma consentono ad un aggressore di eseguire malware sul sistema se il codice PHP non è stato scritto in modo sicuro.

Per disattivare rapidamente questo set di funzioni è necessario riportare le configurazioni mostrate nel file disponibile qui. Per scaricarlo e "attivarlo" rapidamente:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-no-exec.ini https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/no-exec.ini

In caso ora si tentasse di visualizzare una pagina PHP che fa uso di queste funzioni si riceverà un errore simile a Fatal error: Uncaught Error: Call to undefined function exec()

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Da notare che queste funzioni rimangono comunque disponibili quando PHP viene invocato da linea di comando, dove è drasticamente più difficile sfruttarle impropriamente.

Installare PHP 8 su Ubuntu, Passo 10: Fuso orario italiano

Per impostazione predefinita, PHP utilizza il fuso orario UTC+00:00, storicamente noto come "Ora di Londra": 1 ora indietro rispetto al fuso italiano d'inverno (ora solare) e 2 ore indietro rispetto al fuso italiano d'inverno (ora legale)

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM) - time zones fusi orari utc

Per chi lavori in Italia è una buona idea impostare il fuso italiano come predefinito. Il comando per attivare la configurazione dedicata (disponibile qui) è:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-timezone-italy.ini https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/timezone-italy.ini && ln -s /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-timezone-italy.ini /etc/php/${PHP_VER}/cli/conf.d/

Installare PHP 8 su Ubuntu, Passo 11: Rimuovere i limiti per l'esecuzione da linea di comando

PHP impone limiti alla quantità di memoria allocabile da un singolo script (parametro memory_limit) e al tempo per cui uno script può essere eseguito (max_execution_time). Entrambi questi limiti dovrebbero essere rimossi quando PHP viene utilizzato per eseguire script da linea di comando. Per ottenere l'impostazione già pronta (disponibile qui) impartisci questo comando:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/cli/conf.d/30-webstackup-unlimited.ini https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/unlimited.ini

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

nota: il parametro max_execution_time impostato a "illimitato" di default per l'esecuzione da linea di comando. Includerlo qui è una sicurezza in più che l'impostazione sia realmente come ci aspettiamo.

Installare PHP 8 su Ubuntu, Passo 12: Ottimizzazione di OPcache

PHP è un linguaggio interpretato, e non compilato. Significa che il codice sorgente degli script PHP viene letto, interpretato ed eseguito ad ogni esecuzione, cioè (semplificando) "ogni volta che un utente visita una pagina". Questo approccio è altamente penalizzante in termini di velocità. Per far fronte al problema, PHP 5.5 e successivi integrano OPcache: uno spazio in memoria, invisibile all'utente, che conserva una copia parzialmente compilata (bytecode) di ogni file che viene eseguito almeno una volta. Le esecuzioni successive leggono tale copia, saltando una parte del processo di interpretazione: questo porta a significativi aumenti nella prestazioni.

Ho raccolto tutte le impostazioni ottimali di OPcache in questo file. Per ottenerlo:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-opcache.ini https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/opcache.ini

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

È importante notare che questo file è ideale per l'uso in produzione, ma non per l'ambiente di sviluppo: valorizza infatti il parametro opcache.validate_timestamps = 0 che impedisce di rilevare in tempo reale le modifiche apportate al codice degli script PHP. In pratica, questo significa che, pur modificando un file PHP e ricaricando la pagina, non vedrai le modifiche fino a quando non riavvierai il processo di PHP-FPM. Se dunque stai installando PHP sul tuo PC di sviluppo, dovresti saltare l'installazione di questo file. Se l'hai già ottenuto, puoi rimuoverlo facilmente con questo comando:

export PHP_VER=8.3 && rm -f /etc/php/${PHP_VER}/fpm/conf.d/30-webstackup-opcache.ini

Installare PHP 8 su Ubuntu, Passo 13: Regolare il numero di processi PHP-FPM

Per come funziona PHP-FPM, è necessario un singolo processo per gestire ogni singola richiesta di un visitatore. Per gestire dunque 200 richieste perfettamente contemporanee servono 200 processi. Quanti processi PHP-FPM consentire contemporaneamente è un parametro regolabile: più alto è il numero, più alto è il numero di richieste gestibili contemporaneamente, ma anche l'occupazione di memoria.

Se stai installando PHP in un ambiente di sviluppo, oppure su un micro-server con 1 o 2 GB di RAM, puoi caricare il seguente file di configurazione (disponibile qui):

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/pool.d/zz_webstackup-fpm-pool.conf https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/fpm-pool-1GB.conf

Se invece stai installando PHP su un server di produzione con almeno 16 GB di RAM, devi preferire quest'altra configurazione (disponibile qui), in grado di gestire un carico superiore:

export PHP_VER=8.3 && apt install curl -y && curl -Lo /etc/php/${PHP_VER}/fpm/pool.d/zz_webstackup-fpm-pool.conf https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/php/fpm-pool-32GB.conf

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Installare PHP 8 su Ubuntu, Passo 14: Riavviare il servizio php-fpm

Una volta installato in "modalità FPM", PHP viene eseguito all'interno di un proprio servizio dedicato, indipendente dal server web. Ad ogni modifica della configurazione (come quelle che abbiamo appena apportato) è dunque necessario riavviarlo tramite:

service php8.3-fpm restart

Ovviamente è necessario adattare la versione indicata nella stringa php8.3 sostituendola con la specifica versione di PHP appena installata.

Se non viene mostrato alcun messaggio di errore, la configurazione di PHP è terminata. Il servizio è dunque già attivo e pronto a rispondere alle richieste del server web. Puoi verificarlo dapprima impartendo

service php8.3-fpm status

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Batti Q sulla tastiera per uscire. Puoi ora impartire questo comando per scaricare e installare l'utility htop che ti permette di vedere graficamente i processi

apt install htop -y && htop

Scorrendo la lista, dovresti vedere una serie di processi chiamati php-fpm: pool www, tanti quanti sono quelli configurati al precedente Passo Regolare il numero di processi PHP-FPM

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Batti F10 sulla tastiera (oppure clicca su F10 Quit nella striscia in basso) per uscire.

Installare PHP 8 su Ubuntu, Passo 15: Scoprire il socket di PHP-FPM

Dobbiamo ora scoprire quale sia il socket di PHP-FPM, ovvero "a cosa" debba connettersi il server web per interfacciarsi con PHP-FPM. Ci sono sostanzialmente due opzioni:

  • File su disco: PHP-FPM accetta la connessione tramite un file, come ad esempio /run/php/php8.3-fpm.sock
  • Indirizzo IP e porta: PHP-FPM rimane in attesa di connessioni tramite una porta TCP, come ad esempio 127.0.0.1:9000

» Leggi anche: Porta 80 aperta! cosa significa? Guida riepilogativa ai principali numeri di porta TCP per la comunicazione in rete

La prima modalità, utilizzata di default, è leggermente più veloce, ma funziona solo quando il server web e PHP-FPM risiedono sullo stesso sistema (la situazione più comune). La seconda è invece necessaria se, per suddividere il carico, il server web gira su di una macchina e PHP-FPM su di un'altra.

Per scoprire quale sia il socket in uso, leggiamo questa informazione dal file di configurazione dedicato di PHP-FPM. Il comando da impartire è:

export PHP_VER=8.3 && cat /etc/php/${PHP_VER}/fpm/pool.d/www.conf | grep 'listen ='

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Attenzione, ancora una volta, a modificare il valore della variabile PHP_VER= a seconda della versione di PHP installata.

Come si nota nello screenshot precedente, nel mio caso il comando ha rivelato una riga simile alla seguente:

listen = /run/php/php8.3-fpm.sock

(l'altra riga, quella che inizia con ;, si riferisce ad un altro parametro, ed è un commento)

Ebbene: proprio il percorso /run/php/php8.3-fpm.sock è il percorso al socket che ci interessa!

In caso non dovesse funzionare, possiamo aprire manualmente il file e ispezionare il contenuto. Il comando è:

export PHP_VER=8.3 && apt install nano -y && nano /etc/php/${PHP_VER}/fpm/pool.d/www.conf

Il valore che ci interessa è quella che comincia con listen =

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Installare PHP 8 su Ubuntu, Passo 11: index.php

Se già non l'hai fatto contestualmente all'installazione di Apache o NGINX, scarica ore il pacchetto HTML e PHP di esempio:

» Download: File index per test web server

Estrailo quindi nella cartella che contiene il tuo sito e otterrai il file index.php di test. Fai riferimento alle rispettive guide dedicate per maggiori informazioni e la procedura passo passo:

Installare PHP 8 su Ubuntu, Passo 12: Configurare Apache o NGINX

Una volta scaricato il pacchetto con i file di test, verifica di nuovo di avere a disposizione il percorso nel quale si trova il socket di PHP. Lo ripeto di nuovo perché è spesso fonte di problemi: assomiglia a /run/php/php8.3-fpm.sock, ma è bene verificalo puntualmente come descritto poco fa.

Armato di questa informazione, procedi a configurare il server web affinché comunichi con PHP-FPM per interpretare i file .php tramite il socket appena individuato. La procedura varia a seconda che tu stia usando Apache o NGINX, ma le ho documentate entrambe:

Al termine, potrai impartire curl -Lk http://localhost per visualizzare l'HTML della pagina di test

Guida: come installare PHP 8.3 Linux Ubuntu Desktop Server (PHP-FPM)

Cosa fare ora?

Arrivati a questo punto, PHP è installato e funzionante in ambiente Linux. Probabilmente, vorrai ora installare MySQL, indispensabile per eseguire WordPress o pressoché qualsiasi altra cosa. Per il resto della guida:

» Leggi: Installare e configurare un server web: La Grande Guida ad Apache, MySQL, PHP su Windows e Linux in modo facile