Come fare per ottenere di PHP-fpm diverse per siti diversi, sulla stessa macchina Ubuntu 18 o Ubuntu 20?
Premesse
In passato apache2 e PHP venivano installati con il gestore di pacchetti di Ubuntu (apt) o con altri sistemi e per fare in modo che un certo virtualhost di apache2 potesse girare con una versione di PHP differente da quella usata dalla cli, ovvero da riga di comando.
Oggi è possibile installare PHP come servizio ed è quindi possibile avere diverse versioni autonome di PHP in running sul sistema operativo ed è quindi possibile utilizzare ad hoc quella di cui si necessita.
Precondizioni
L’articolo considera che il sistema operativo è correttamente funzionante e apache2 installato e funzionante.
Prima di installare, per preparare la macchina all’installazione lanciare:
sudo apt-get install software-properties-common -y #Consente di aggiungere repository
sudo add-apt-repository ppa:ondrej/php #Aggiunge il repo di ondrej per PHP-FPM
sudo apt update #Aggiorna tutti i pacchetti
sudo apt upgrade #Effettua l'upgrade di tutti i pacchetti
Sommario
Detto questo vediamo nel dettaglio:
- Come installare PHP-FPM (valido per php7.0, php7.1, php7.2, php7.3, php7.4);
- Come avviare PHP-FPM;
- Come usare una certa versione di PHP da linea di comando (default php cli)
- Come usare una certa versione di PHP su un certo virtualhost
1. Come installare PHP-FPM (valido per per php7.0, php7.1, php7.2, php7.3, php7.4)
Per installare PHP-FPM lanciare il comando:
sudo apt-get install php7.0 php7.0-fpm php7.0-mysql libapache2-mod-php7.0 libapache2-mod-fcgid -y
Si noti che il comando è analogo per le altre versioni di PHP. Basterà cambiare 7.0 in 7.x (dove x è 1, 2 ,3, 4 eccetera).
Inoltre è bene precisare che esistono molti pacchetti software per PHP e che questi sono forniti a mo’ d’esempio.
2. Come avviare PHP-FPM
sudo systemctl start php7.0-fpm
Con questo comando invece si abilita il servizio php-fpm 7.0, che a questo punto può essere usato da chiunque lo richiami correttamente.
Per verificare che il servizio sia in piedi e sia correttamente attivo, lanciare:
sudo systemctl status php7.0-fpm
3. Come usare una certa versione di PHP da linea di comando (default php cli)
Per usare una certa versione di PHP (una volta che è stata installata e attivata) si può usare il seguente comando:
sudo update-alternatives --set php /run/php/php7.0
Ovviamente il comando, opportunamente modificato è valido per tutte le versioni di PHP-FPM.
Lanciato il comando potrete verificare quale sia la versione corrente di PHP in uso da console di comandi o terminale o cli, usando il comando:
php --version
Il comando dovrebbe rispondere con un messaggio simile a questo:
PHP 7.2.24-0ubuntu0.18.04.7 (cli) (built: Oct 7 2020 15:24:25) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.24-0ubuntu0.18.04.7, Copyright (c) 1999-2018, by Zend Technologies
Ovviamente nel mio caso si trattava di PHP 7.2.
4. Come usare una certa versione di PHP su un certo virtualhost
Per usare una specifica versione di PHP su un determinato sito web definito in un virtualhost di apache2 bisogna modificare il file .conf ad esso associato aggiungendo questo codice tra i tag <virtualhost>:
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
</FilesMatch>
Per php 7.2 il codice da inserire è il seguente:
<FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" </FilesMatch>
Assicurarsi che il path che segue sia effettivamente raggiungibile.
/run/php/php7.0-fpm.sock
Riavviare apache con il comando
systemctl restart apache2
per rendere effettive le modifiche.
Qualcosa non ti torna? Scrivimi nei commenti.