Apache HTTP Server è lo strumento principe per approntare server web ed erogare pagine HTML. Se però desideri utilizzare un gestore di contenuti (CMS) come WordPress, una piattaforma di eCommerce come Magento o PrestaShop oppure un sito basato su Symfony o Laravel hai bisogno anche dell'interprete PHP, ovvero quel componente che, materialmente, esegue il codice presente nei file .php. In questa guida vedremo dunque come configurare Apache per elaborare codice PHP 8 tramite PHP-FPM.

Procedura aggiornata e ottimizzata per funzionare al meglio con PHP 8.3 e Ubuntu 24.04

Nel prosieguo mi riferirò al software "Apache HTTP Server" chiamandolo solo "Apache", per brevità. Ci concentreremo dunque sulla configurazione di Apache e PHP. Per la guida equivalente, incentrata su NGINX al posto di Apache, consulta quest'altro approfondimento dedicato:

» Leggi: Guida PHP 8 e NGINX su Ubuntu: come attivare, installare e configurare PHP-FPM

La procedura è stata testata su Ubuntu 24.04, 22.04 e 20.04 (sia "Desktop", sia "Server"), ma è analoga per tutte le distribuzioni derivate (fra le quali "Mint") e, presumibilmente, per le iterazioni successive. L'ultima versione testata è PHP 8.3, ma nel corso degli anni ho svolto la medesima configurazione anche sulle generazioni precedenti: PHP 8.x, PHP 7.x e PHP 5.6

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

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

Installare Apache

La prima cosa da fare per configurare Apache e PHP è proprio... installare Apache. Segui dunque la procedura mostrata in quest'altra guida:

» Leggi: Guida definitiva: come installare Apache su Ubuntu

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

Ti raccomando caldamente di non andare oltre fino a quando non sarai riuscito a visualizzare una pagina HTML statica erogata da Apache.

Installare PHP-FPM

Procedi dunque ad installare PHP. Per quanto riguarda la comunicazione fra Apache e PHP, sono previste principalmente due modalità alternative:

  1. configurare PHP come modulo di Apache (mod_php): l'interprete PHP viene caricato direttamente all'interno del processo di Apache. Per chi osserva il sistema, sembra a tutti gli effetti che "Apache esegua codice PHP"
  2. installare il servizio indipendente PHP-FPM: Apache comunica con un processo indipendente, chiamato PHP-FPM, tramite il protocollo FastCGI. PHP-FPM esegue il codice PHP richiesto e restituisce la risposta ad Apache

Il primo modo è quello "classico", ed è il più facile da configurare, ma oggi è in disuso per via dell'eccessivo consumo di memoria: mod_php impone infatti di caricare una copia distinta e completa dell'interprete PHP all'interno di ogni singolo processo di Apache, occupando inutilmente memoria.

Le configurazioni moderne utilizzando invece la seconda modalità, con PHP-FPM e l'interfacciamento dei due servizi. Nel corso della presente guida configureremo dunque Apache con PHP-FPM.

Procedi dunque a installare PHP e PHP-FPM. Abbiamo visto la procedura in quest'altro approfondimento dedicato:

» Leggi: Guida: come installare PHP su Ubuntu Linux (PHP-FPM)

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video) - server php ubuntu

Ti raccomando caldamente di preferire lo script automatico indicato in quell'articolo: oltre a risparmiarti il tedio di svolgere manualmente le operazioni necessarie a installare PHP, lo script automatico svolge anche molti passi presentati qui di seguito.

Se dunque hai usato lo script automatico, salta direttamente al paragrafo Aprire il file di configurazione del sito della presente guida.

PHP 8 e Apache, Passo 1: Diventare root

Lo script proposto installa PHP su Ubuntu automaticamente ed è la modalità che, personalmente, raccomando. Se però hai installato PHP manualmente, puoi metterlo in comunicazione con Apache 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

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

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

PHP 8 e Apache, Passo 2: Rimuovere mod_php

Per quanto spiegato sopra, in questa nostra configurazione non vogliamo usare il vetusto mod_php, preferendo invece la modalità con PHP-FPM. Iniziamo dunque assicurandoci che mod_php non sia stato attivato, magari per errore. Il comando per disattivarlo è:

a2dismod php* -f

Se mod_php non era attivo, come ci aspettiamo in situazioni standard, riceverai il messaggio ERROR: No module found matching php*!

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

In caso contrario, il modulo verrà disattivato.

Ora rimuoviamolo del tutto:

apt purge libapache2-mod-php* -y

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

PHP 8 e Apache, Passo 3: proxy_fcgi

Devi ora installare un modulo aggiuntivo per Apache chiamato proxy_fcgi: si tratta del componente che si interfaccia da un lato con Apache, e dall'altro con PHP-FPM tramite protocollo FastCGI. Allo scopo, il seguente comando è sufficiente:

apt update && apt install libapache2-mod-fcgid -y

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

Ora che il modulo è installato, devi attivarlo. Il comando è:

a2enmod proxy_fcgi setenvif

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

Come vedi, abbiamo attivato in un colpo solo anche un altro modulo, chiamato setenvif (viene fornito a corredo del pacchetto standard di Apache, quindi non è necessario installarlo manualmente). Si tratta di un componente che permette di configurare condizioni if/else ed è necessario in alcune circostanze.

PHP 8 e Apache, Passo 4: Scaricare il file di configurazione (php-fpm.conf)

Devi ora configurare Apache di modo che si connetta a PHP-FPM per interpretare il codice PHP.

L'installazione del pacchetto PHP potrebbe aver già predisposto un file adibito, ma qui ne utilizzeremo uno personalizzato. Procedi a disattivare quello di default tramite questo comando:

a2disconf *php* -f

È possibile che tu riceva il messaggio ERROR: No conf found matching *php*, ma è normale se non ci sono configurazioni precedenti.

Ora scarica il file php-fpm.conf (disponibile qui) che ho preparato. Lancia questo comando:

apt update && apt install curl -y && curl -Lo /etc/apache2/php-fpm.conf https://turbolab.it/scarica/462

Così facendo, il file verrà salvato nel percorso /etc/apache2/php-fpm.conf.

PHP 8 e Apache, Passo 5: Rimuovere DirectoryIndex

Dobbiamo apportare una modifica alla direttiva DirectoryIndex di Apache che stabilisce quale file restituire quando l'utente richiede via browser una directory oppure il dominio del nostro sito senza indicare un file specifico. Di default, Apache restituisce index.html, ma per generare dinamicamente la pagina "home" con PHP dobbiamo usare index.php.

Il file di configurazione in precedenza prevede già la direttiva configurata in modo opportuno, ma per renderla effettiva dobbiamo eliminare il default di Apache tramite questo comando:

rm -f /etc/apache2/mods-enabled/dir.conf

(riprendi da qui se hai usato lo script automatico!) Aprire il file di configurazione del sito

Dobbiamo ora attivare il supporto a PHP includendo, all'interno della configurazione di ogni sito erogato da Apache (<VirtualHost>...</VirtualHost>), le apposite direttive che dicono: "Hey, Apache! Quando ti viene richiesto un file .php, passalo a quest'altro programma, che è l'interprete PHP, e attendi la sua risposta, prima di mostrarlo al browser web del visitatore!".

Iniziamo individuando il file di configurazione del sito erogato da Apache per il quale vuoi attivare PHP. Dovresti trovarlo nel percorso /etc/apache2/sites-enabled/

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

Una volta individuato il file di configurazione, aprilo in modifica impartendo un comando simile a:

sudo nano /etc/apache2/sites-enabled/example.com.conf

Per questo esempio utilizzerò il file chiamato example.com.conf che avevamo preparato nella guida ad Apache per erogare il sito di esempio.

Attivare il supporto a PHP

Una volta davanti al file di configurazione, individua il blocco <VirtualHost>...</VirtualHost>. Al suo interno, in un punto qualsiasi, aggiungi queste due direttive per indicare la versione di PHP da usare (deve essere una di quelle che hai installato in precedenza) e includere la configurazione dedicata:

define PHP_VER 8.3

include /etc/apache2/php-fpm.conf

Guida PHP 8 Apache Ubuntu: come attivare, installare configurare PHP-FPM (video)

Chiaramente, assicurati di sostituire a 8.3 il numero di versione che vuoi usare.

Una volta fatto, salva e chiudi battendo da tastiera Ctrl+O, poi Invio, poi Ctrl+X.

Ricaricare la configurazione di Apache

Devi ora impartire il comando per ricaricare la configurazione aggiornata e rendere effettive le ultime modifiche:

sudo apachectl configtest && sudo service apache2 reload

Conclusione

Torna ora alla guida a PHP per il test e la conclusione:

» Leggi: Guida: come installare PHP su Ubuntu