Ricerca nel sito web

Come installare PHP 7 con Apache e MariaDB su CentOS 7/Debian 8


La scorsa settimana (più precisamente il 21 agosto 2015), il team di sviluppo PHP ha annunciato la disponibilità dell'ultima versione di PHP 7 e ha incoraggiato gli utenti e gli sviluppatori di tutto il mondo a testare Esso.

Tuttavia, dobbiamo notare che, poiché si tratta di una versione RC (Release Candidate), si prevede che possa presentare bug o incompatibilità con le configurazioni esistenti, quindi agli utenti viene chiesto di segnalarli utilizzando il sistema di tracciamento dei bug e di non utilizzare PHP 7 in produzione mentre rimane in quella fase.

Il lato positivo è che questa versione include diverse correzioni (potresti fare riferimento a questa pagina nel repository GitHub del progetto per un elenco dettagliato delle nuove funzionalità e miglioramenti), con la caratteristica più distintiva che è un notevole incremento prestazionale rispetto alle versioni precedenti.

Questo articolo ti guiderà attraverso il processo di installazione e compilazione di PHP 7 RC1 dal tarball sorgente insieme ad Apache e MariaDB su CentOS 7 e Debian 8 Jessie. Le stesse istruzioni funzionano anche su distribuzioni basate su CentOS come RHEL, Fedora, Scientific Linux e Debian< come Ubuntu/Mint.

Installazione di PHP 7 in CentOS 7 e Debian 8

Come affermato nell'introduzione, poiché questa versione è una RC anziché una versione stabile, non possiamo ragionevolmente aspettarci di trovarla nei repository. Per questo motivo dovremo scaricare il codice sorgente e compilare il programma da zero.

Prima di farlo, però, dobbiamo ricordare che per sfruttare al meglio PHP 7 e forse il modo migliore per provarlo è installarlo insieme ad Apache e MariaDB – che POSSIAMO trovare nei repository:

Su CentOS 7


yum update && yum install httpd mariadb mariadb-server

Su Debian 8


aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

In entrambi i casi, il tarball con il codice sorgente di PHP può essere scaricato ed estratto come segue:


wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt

Una volta terminato, spostiamoci in /opt/php-7.0.0RC1 ed eseguiamo lo script buildconf con l'opzione –force per forzare il realizzazione di una versione RC:


ls


cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force

Ora è il momento di eseguire il nostro noto comando configure. Sebbene le opzioni seguenti garantiscano un'installazione standard di PHP 7, puoi fare riferimento all'elenco completo delle opzioni nel manuale PHP per personalizzare meglio l'installazione in base alle tue esigenze:


./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

Se riscontri il seguente errore:


configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

Installa semplicemente gcc e le dipendenze con il seguente comando ed esegui nuovamente il comando configure precedente.


yum install gcc       [On CentOS 7 box]
aptitude install gcc  [On Debian 8 box]

Sarai sulla buona strada per compilare PHP 7, il che potrebbe richiedere del tempo. Se sono presenti altre librerie o risorse mancanti, questo processo fallirà ma puoi sempre installarle ed eseguire nuovamente la configurazione.

Ad esempio, ho dovuto installare libxml2-devel dopo aver ricevuto il seguente messaggio di errore:


configure: error: xml2-config not found. Please check your libxml2 installation.

Sfortunatamente, non possiamo coprire tutti gli scenari poiché il software installato può variare da un sistema all'altro. Durante l'installazione, potresti fare riferimento a questa pagina che descrive diversi errori che potresti incontrare durante l'installazione di PHP dal sorgente, insieme alle rispettive soluzioni.

Su CentOS 7

Ecco un elenco completo dei pacchetti che ho dovuto installare nel mio dispositivo CentOS 7 prima di poter completare il processo di configurazione:


gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

Puoi installare tutti i pacchetti richiesti sopra con un singolo comando yum come mostrato.


yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

Il seguente messaggio indica che la configurazione è stata completata correttamente:

Allora corri,


make
make install

Una volta completata l'installazione puoi verificare la versione utilizzando la riga di comando:

Su Debian 8

In Debian, ho dovuto installare i seguenti pacchetti affinché il processo di configurazione venisse completato con successo:


make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

Puoi installare tutti i pacchetti richiesti sopra con il comando apt-get su Debian 8.


apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

Quindi aggiungi –with-libdir=/lib/x86_64-linux-gnu alle opzioni di configurazione e crea il seguente collegamento simbolico al file di intestazione gmp.h:


ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

Quindi esegui make e make install come nel caso precedente. Entro 10-15 minuti la compilazione dovrebbe essere completata e potremo verificare la versione PHP installata come prima:


make
make install

Configurazione di php.ini e test dell'installazione di PHP 7

Quando installi PHP dal sorgente, vengono forniti due php.ini di esempio. In questo caso, si trovano all'interno di /opt/php-7.0.0RC1:


ls -l /opt/php-7.0.0RC1 | grep php.ini

Ora devi copiarne uno in /usr/local/lib, che è designato come percorso predefinito per tale file secondo le note di installazione:


cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

E non dimenticare di aggiungere questa direttiva di configurazione ai principali file di configurazione di Apache.


/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

In Debian 8 puoi omettere la riga LoadModule e devi anche rimuovere e creare i seguenti collegamenti simbolici ai moduli Apache indicati:


cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load

Quindi, riavvia il server web:


systemctl restart httpd     [On CentOS 7 box]
systemctl restart apache2   [On Debian 8 box]

Se l'avvio di Apache in CentOS 7 restituisce un messaggio di errore che dice che non riesce a trovare il modulo libphp7.so, copia semplicemente nel percorso indicato da /opt/php-7.0.0RC1/.libs/libphp7.so.

Il modo classico per testare un'installazione PHP/Apache è utilizzare un file phpinfo(). Crea un file denominato test.php con i seguenti contenuti nella root dei documenti del server web (/var/www/html in entrambe le distribuzioni):


<?php
phpinfo();
?>

E avvia un browser in un client all'interno della tua rete per testare:


http://localhost/test.php
OR
http://IP-address/test.php

Riepilogo

In questo articolo abbiamo spiegato come installare PHP 7 dal codice sorgente, il più recente RC di questo popolare linguaggio di scripting lato server che mira a migliorare le prestazioni a valori senza precedenti. Fino a quando non raggiungerà la scuderia nel novembre di quest'anno 2015, ti consigliamo FORTEMENTE di NON utilizzare questa versione in un ambiente di produzione.

Se hai domande/commenti/suggerimenti su questo articolo, non esitare a farcelo sapere utilizzando il modulo sottostante.