Com instal·lar PHP 7 amb Apache i MariaDB a CentOS 7/Debian 8


La setmana passada (més precisament el 21 d'agost de 2015), l'equip de desenvolupament de PHP va anunciar la disponibilitat de la darrera versió de PHP 7 i va animar els usuaris i desenvolupadors de tot el món a provar-lo.

Tanmateix, hem de tenir en compte que com que es tracta d'una versió RC (Release Candidate), s'espera que pugui tenir errors o incompatibilitats amb les configuracions existents, de manera que se'ls demana als usuaris que els informin mitjançant el sistema de seguiment d'errors i que no utilitzin PHP 7 en producció mentre roman en aquesta fase.

La part bona és que aquesta versió inclou diverses correccions (és possible que vulgueu consultar aquesta pàgina al repositori GitHub del projecte per obtenir una llista detallada de les noves funcions i millores), amb la característica més distintiva que és un augment de rendiment notable en comparació amb l'anterior. versions.

Aquest article us guiarà pel procés d'instal·lació i compilació de PHP 7 RC1 des de l'arxiu de codi font juntament amb Apache i MariaDB a CentOS 7 i Debian 8 Jessie. Les mateixes instruccions també funcionen en distribucions basades en CentOS com RHEL, Fedora, Scientific Linux i basades en Debian com Ubuntu/Mint.

Instal·lació de PHP 7 a CentOS 7 i Debian 8

Com s'indica a la introducció, com que aquesta versió és un RC en lloc d'una versió estable, no podem esperar raonablement trobar-la als repositoris. Per aquest motiu, haurem de descarregar el codi font i compilar el programa des de zero.

Abans de fer-ho, però, hem de recordar que per aprofitar millor PHP 7 i potser la millor manera de provar-ho és instal·lar-lo juntament amb Apache i MariaDB, que podem trobar als repositoris:

# yum update && yum install httpd mariadb mariadb-server
# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

En qualsevol cas, el fitxer tarball amb el codi font de PHP es pot descarregar i extreure de la següent manera:

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

Un cop fet, anem a /opt/php-7.0.0RC1 i executem l'script buildconf amb l'interruptor –force per forçar la compilació d'una versió RC:

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

Ara és el moment d'executar la nostra coneguda comanda de configuració. Tot i que les opcions següents garantiran una instal·lació estàndard de PHP 7, podeu consultar la llista completa d'opcions al manual de PHP per personalitzar millor la instal·lació segons les vostres necessitats:

# ./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

Si trobeu el següent error:

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

Simplement instal·leu gcc i dependències amb l'ordre següent i torneu a executar l'ordre de configuració anterior.

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

Estareu en camí de compilar PHP 7, que pot trigar una estona. Si falten altres biblioteques o recursos, aquest procés fallarà, però sempre podeu instal·lar-los i tornar a executar la configuració.

Per exemple, vaig haver d'instal·lar libxml2-devel després d'obtenir el següent missatge d'error:

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

Malauradament, no podem cobrir tots els casos, ja que el programari instal·lat pot variar d'un sistema a un altre. Durant la instal·lació, és possible que vulgueu consultar aquesta pàgina que descriu diversos errors que podeu trobar durant la instal·lació de PHP des de la font, juntament amb les seves solucions respectives.

Aquí teniu una llista completa dels paquets que vaig haver d'instal·lar a la meva caixa CentOS 7 abans de poder completar el procés de configuració:

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

Podeu instal·lar tots els paquets necessaris anteriors amb una única comanda yum, tal com es mostra.

# 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

El missatge següent indica que la configuració ha finalitzat correctament:

Llavors corre,

# make
# make install

Quan s'hagi completat la instal·lació, podeu comprovar la versió mitjançant la línia d'ordres:

A Debian, vaig haver d'instal·lar els paquets següents perquè el procés de configuració es completés correctament:

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

Podeu instal·lar tots els paquets necessaris anteriors amb l'ordre apt-get a 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

A continuació, afegiu, –with-libdir=/lib/x86_64-linux-gnu a les opcions de configuració i creeu l'enllaç simbòlic següent al fitxer de capçalera gmp.h:

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

A continuació, va executar make and make install com en el cas anterior. En 10-15 minuts, la compilació s'hauria d'haver completat i podem verificar la versió de PHP instal·lada com abans:

# make
# make install

Configuració de php.ini i prova de la instal·lació de PHP 7

Quan instal·leu PHP des de la font, es proporcionen dos exemples de php.ini. En aquest cas, es troben dins de /opt/php-7.0.0RC1:

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

Ara heu de copiar-ne un a /usr/local/lib, que està designat com a ubicació predeterminada per a aquest fitxer segons les notes d'instal·lació:

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

I no oblideu afegir aquesta directiva de configuració als fitxers de configuració principals d'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>

A Debian 8 podeu ometre la línia LoadModule i també heu d'eliminar i crear els següents enllaços simbòlics als mòduls Apache indicats:

# 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

A continuació, reinicieu el servidor web:

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

Si l'inici d'Apache a CentOS 7 retorna un missatge d'error que diu que no pot trobar el mòdul libphp7.so, simplement copieu-lo al camí indicat des de /opt/php-7.0.0RC1/.libs/libphp7.so.

La forma clàssica de provar una instal·lació PHP/Apache és utilitzar un fitxer phpinfo(). Creeu un fitxer anomenat test.php amb el contingut següent a l'arrel del document del servidor web (/var/www/html en ambdues distribucions):

<?php
phpinfo();
?>

I inicieu un navegador en un client de la vostra xarxa per provar:

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

Resum

En aquest article hem explicat com instal·lar PHP 7 des del codi font, el RC més recent d'aquest popular llenguatge de script del costat del servidor que té com a objectiu millorar el rendiment amb valors sense precedents. Fins que no arribi a l'estable el novembre d'aquest any 2015, se us aconsella FORTAMENT que NO utilitzeu aquesta versió en un entorn de producció.

Si teniu cap pregunta, comentari o suggeriment sobre aquest article, no dubteu a fer-nos-ho saber mitjançant el formulari següent.