PHP Installation · 7 min read · Oct 28, 2025

Come installare PHP 7.1.16 come PHP-FPM e FastCGI per ISPConfig 3.1 su Debian 8 (Jessie)

La versione finale di PHP 7.1 è disponibile per il download su Github e sui mirror di PHP ora. PHP 7.1 è la prossima generazione del linguaggio di programmazione PHP, è fino a 2 volte più veloce di PHP 5.6 e 14 volte più veloce di PHP 5.0 secondo le note di rilascio. La nuova versione di PHP non è 100% compatibile con PHP 5.x poiché alcune API deprecate sono state rimosse, quindi è una buona idea iniziare a testare i tuoi siti web per la compatibilità con questo nuovo rilascio. Questo può essere fatto facilmente e senza influenzare tutti i siti sul tuo server utilizzando la funzione multi versione PHP in ISPConfig 3. La versione di PHP può essere selezionata nelle impostazioni del sito web di ISPConfig 3 per ciascun sito individualmente. Questa funzione funziona con PHP-FPM e FastCGI. Questo tutorial mostra come costruire il nuovo PHP 7.1 come versione PHP-FPM e FastCGI su un server Debian Jessie. Questa build di PHP 7.1 include molte estensioni compilate e Zend OPcache e Memcached come moduli caricabili.

1 Nota preliminare

Installerò PHP 7.1 che è stato rilasciato come versione finale pochi giorni fa. Si prega di notare che PHP-FPM può essere utilizzato sia su server Apache che Nginx, mentre FastCGI è disponibile solo per server Apache.

Con le versioni PHP più vecchie, PHP-FPM e FastCGI erano stati mutuamente esclusivi in modo che un binario FPM e FastCGI dovesse essere costruito separatamente. Con PHP 7.1, un singolo binario che supporta la modalità FPM e FCGI può essere costruito.

2 Compilare PHP 7.1 con PHP-FPM e Fastcgi

Scarica e estrai PHP 7.1 da Github:

mkdir -p /opt/php-7.1  
mkdir /usr/local/src/php7-build  
cd /usr/local/src/php7-build  
wget http://de2.php.net/get/php-7.1.16.tar.bz2/from/this/mirror -O php-7.1.16.tar.bz2  
tar jxf php-7.1.16.tar.bz2
cd php-7.1.16/

Installa i prerequisiti per costruire PHP 7.1 e l’editor nano che userò per modificare i file di configurazione:

apt-get install build-essential nano autoconf
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(L’ultimo comando è necessario se costruisci PHP con –with-imap, perché altrimenti ./configure si fermerà con il seguente errore:

checking for crypt in -lcrypt... yes  
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.  
root@server1:/usr/local/src/php5-build/php-7.0.7#

)

Configura e costruisci PHP 7.1 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un’occhiata a

./configure --help

per vedere tutte le opzioni disponibili; se usi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive, oppure il processo di build fallirà):

./configure --prefix=/opt/php-7.1 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

L’ultimo switch ( –enable-fpm) assicura che questa versione di PHP funzioni con PHP-FPM.

make  
make install

Copia php.ini e php-fpm.conf nelle posizioni corrette:

cp /usr/local/src/php7-build/php-7.1.16/php.ini-production /opt/php-7.1/lib/php.ini
cp /opt/php-7.1/etc/php-fpm.conf.default /opt/php-7.1/etc/php-fpm.conf  
cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf

Apri /opt/php-7.1/etc/php-fpm.conf e modifica la seguente impostazione (rimuovi il ; davanti alla riga pid):

nano /opt/php-7.1/etc/php-fpm.conf
[...]  
pid = run/php-fpm.pid  
[...]  

Poi apri /opt/php-7.1/etc/php-fpm.d/www.conf e modifica la riga listen, devi usare una porta non utilizzata (ad esempio 8999; la porta 9000 potrebbe essere già in uso dal PHP-FPM predefinito di Debian):

nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...]  
listen = 127.0.0.1:8999  
[...]  

Quando utilizzi più versioni PHP aggiuntive, assicurati di usare una porta libera, ad esempio 8998, 8997 e così via per le versioni successive.

3 Crea lo script di init e il file di unità systemd

Debian supporta Systemd così come i tradizionali script di init. La maggior parte dei sistemi oggi utilizza Systemd, in questo caso procedi con il capitolo 3.2, per i sistemi con sistema di init tradizionale, segui il capitolo 3.1 e poi procedi con il capitolo 4. Non installare entrambi, lo script systemd e init.d, sullo stesso sistema.

3.1 Crea uno script di avvio init.d

Per prima cosa creerò uno script di init per il servizio php-fpm e poi creerò un’unità systemd.

Prima, crea uno script di init per PHP-FPM:

nano /etc/init.d/php-7.1-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.1-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.1-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.1/sbin/php-fpm
php_fpm_CONF=/opt/php-7.1/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.1/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Rendi lo script di init eseguibile e crea i collegamenti di avvio del sistema:

chmod 755 /etc/init.d/php-7.1-fpm  
insserv php-7.1-fpm

Infine avvia PHP-FPM:

/etc/init.d/php-7.1-fpm start

Il risultato dovrebbe essere:

/etc/init.d/php-7.1-fpm start  
Starting php-fpm done

3.2 Crea uno script Systemd per PHP 7.1

Ora crea il file di unità systemd:

nano /lib/systemd/system/php-7.1-fpm.service

con il seguente contenuto:

[Unit]  
Description=The PHP 7.1 FastCGI Process Manager  
After=network.target  
  
[Service]  
Type=simple  
PIDFile=/opt/php-7.1/var/run/php-fpm.pid  
ExecStart=/opt/php-7.1/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.1/etc/php-fpm.conf  
ExecReload=/bin/kill -USR2 $MAINPID  
  
[Install]  
WantedBy=multi-user.target

Abilita il servizio e ricarica systemd:

systemctl enable php-7.1-fpm.service  
systemctl daemon-reload

Infine avvia PHP-FPM:

systemctl start php-7.1-fpm.service

4 Abilita Zend OPcache

Per abilitare Zend OPcache, apri /opt/php-7.1/lib/php.ini…

nano /opt/php-7.1/lib/php.ini

… e aggiungi la seguente riga alla fine:

[...]  
zend_extension=opcache.so

L’estensione Memcache e APCu non possono essere installate su PHP 7.1 ancora, quindi salterò la loro installazione per ora. Aggiornerò il tutorial più tardi quando le estensioni pecl saranno compatibili con PHP 7.1.

Testa la versione di PHP:

cd /opt/php-7.1/bin  
./php --version

L’output dovrebbe essere simile a questo screenshot.

Si prega di notare: Lo screenshot è di PHP 7.1.16, il tutorial viene aggiornato continuamente per nuove versioni di PHP 7.1, ma non facciamo nuovi screenshot ogni volta, quindi la versione di PHP 7.1 che vedrai sul tuo server potrebbe essere più recente. La versione attuale di questo tutorial è per php-7.1.16.

5 Abilita Memcache (opzionale)

In questo capitolo, compilerò e abiliterò l’estensione PHP Memcached.

Il primo passo è installare il pacchetto libmemcached-dev da Debian.

apt-get install libmemcached-dev

Poi crea una directory, scarica l’estensione PHP memcache da Github, estrai l’archivio ed entra nella directory che contiene i file estratti.

mkdir /usr/local/src/php7-build/php-memcache  
cd /usr/local/src/php7-build/php-memcache  
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip  
unzip php7.zip  
cd php-memcached-php7

Prepara le sorgenti eseguendo il comando phpize da PHP 7.1.

/opt/php-7.1/bin/phpize

Configura e costruisci l’estensione PHP memcache.

./configure --with-php-config=/opt/php-7.1/bin/php-config  
make  
make install

Per abilitare l’estensione Memcache, apri /opt/php-7.1/lib/php.ini…

nano /opt/php-7.1/lib/php.ini

… e aggiungi la seguente riga alla fine:

[...]  
extension=memcached.so

2.1 Installa l’estensione xDebug (opzionale)

Il modulo xDebug è un’estensione di debug per PHP. L’installazione è facoltativa.

Installa xDebug con questi comandi.

cd /opt/php-7.1/etc  
pecl -C ./pear.conf update-channels  
pecl -C ./pear.conf install xdebug

Poi modifica il file php.ini con un editor:

nano /opt/php-7.1/lib/php.ini

e aggiungi la seguente riga alla fine del file:

zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

Infine riavvia il demone php-fpm:

service php-7.1-fpm restart

7 Abilita PHP 7.1 in ISPConfig

In ISPConfig 3, puoi configurare la nuova versione di PHP sotto Sistema > Versioni PHP aggiuntive. Nella scheda Nome, devi solo inserire un nome per la versione di PHP (ad esempio PHP 7.1) - questa versione di PHP verrà elencata sotto questo nome nelle impostazioni del sito web in ISPConfig:

Inserisci il nome della versione PHP personalizzata

Vai alla scheda Impostazioni FastCGI e compila i campi come segue:

Percorso del binario PHP FastCGI: /opt/php-7.1/bin/php-cgi  
Percorso della directory php.ini: /opt/php-7.1/lib

PHP 7.1 FastCGI

Poi vai alla scheda Impostazioni PHP-FPM e compila i campi come segue:

Percorso dello script di init PHP-FPM: /etc/init.d/php-7.1-fpm  
Percorso della directory php.ini: /opt/php-7.1/lib  
Percorso della directory del pool PHP-FPM: /opt/php-7.1/etc/php-fpm.d  

Impostazioni PHP 7.1 FPM

7 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.