La versione finale di PHP 7.1 è ora disponibile per il download su Github e sui mirror PHP. 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 è compatibile al 100% con PHP 5.x poiché alcune API deprecate sono state rimosse, quindi è una buona idea iniziare a testare la compatibilità dei tuoi siti Web con questa nuova versione. Questa operazione può essere eseguita facilmente e senza influire su tutti i siti sul server utilizzando la funzione della versione multi PHP in ISPConfig 3. La versione PHP può essere selezionata nelle impostazioni del sito Web ISPConfig 3 per ciascun sito individualmente. Questa funzione funziona con PHP-FPM e FastCGI. Questo tutorial mostra come creare il nuovo PHP 7.1 come PHP-FPM e una versione FastCGI su un server Debian Jessie. Questa build 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. Tieni presente che PHP-FPM può essere utilizzato su entrambi i server Apache e Nginx mentre FastCGI è disponibile solo per i server Apache.
Con le versioni precedenti di PHP, PHP-FPM e FastCGI si escludevano a vicenda, quindi un binario FPM e FastCGI doveva essere compilato separatamente. Con PHP 7.1 è possibile creare un singolo binario che supporti la modalità FPM e FCGI.
2 Compila PHP 7.1 con PHP-FPM e Fastcgi
Scarica ed 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 la creazione di PHP 7.1 e il nano editor 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 crei 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.
[email protected]:/usr/local/src/php5-build/php-7.0.7#
)
Configura e compila 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 utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive o il processo di compilazione non riuscirà):
./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'ultima opzione (--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 regola la seguente impostazione (rimuovi; davanti alla riga pid):
nano /opt/php-7.1/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...]
Quindi apri /opt/php-7.1/etc/php-fpm.d/www.conf e regola la linea di ascolto, devi utilizzare una porta non utilizzata (ad es. 8999; la porta 9000 potrebbe essere già utilizzata 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 utilizzare una porta libera, ad es. 8998, 8997 e così via per le prossime versioni.
3 Crea lo script init e il file dell'unità systemd
Debian supporta Systemd così come i tradizionali script di inizializzazione. La maggior parte dei sistemi oggi utilizza Systemd, in questo caso procedere con il capitolo 3.2, per i sistemi con sistema init tradizionale, seguire il capitolo 3.1 e poi procedere con il capitolo 4. Non installare entrambi, lo script systemd e init.d, sullo stesso sistema.
3.1 Creare uno script di avvio init.d
Per prima cosa creerò uno script init per il servizio php-fpm e poi creerò un'unità systemd.
Innanzitutto, crea uno script di inizializzazione 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 eseguibile lo script init e crea i collegamenti di avvio del sistema:
chmod 755 /etc/init.d/php-7.1-fpm
insserv php-7.1-fpm
Finalmente 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 script Systemd per PHP 7.1
Ora crea il file dell'unità di sistema:
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
Finalmente 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 può ancora essere installata su PHP 7.1, quindi salterò la loro installazione per ora. Aggiornerò il tutorial in seguito quando le estensioni pecl saranno compatibili con PHP 7.1.
Testare la versione PHP:
cd /opt/php-7.1/bin
./php --version
L'output dovrebbe essere simile a questo screenshot.
Nota: Lo screenshot è di PHP 7.1.16, il tutorial viene aggiornato continuamente per le nuove versioni di PHP 7.1, ma non acquisiamo nuovi screenshot ogni volta, quindi la versione di PHP 7.1 che vedrai sul tuo server potrebbe essere più recente. La versione corrente 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
Quindi crea una directory, scarica l'estensione memcache PHP da Github, decomprimi l'archivio e inserisci la directory che contiene i file decompressi.
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 i sorgenti eseguendo il comando phpize da PHP 7.1.
/opt/php-7.1/bin/phpize
Configura e crea l'estensione memcache PHP.
./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 Installare 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
Quindi 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 PHP in Sistema> Versioni PHP aggiuntive. Nella scheda Nome, inserisci semplicemente un nome per la versione PHP (ad es. PHP 7.1):questa versione PHP sarà elencata con questo nome nelle impostazioni del sito Web in ISPConfig:
Vai alla scheda Impostazioni FastCGI e compila i campi come segue:
Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib
Quindi vai alla scheda Impostazioni PHP-FPM e compila i campi come segue:
Path to the PHP-FPM init script: /etc/init.d/php-7.1-fpm
Path to the php.ini directory: /opt/php-7.1/lib
Path to the PHP-FPM pool directory: /opt/php-7.1/etc/php-fpm.d
7 link
- PHP:http://www.php.net/
- Configurazione ISP:http://www.ispconfig.org/
- Debian:http://www.debian.org/