Cómo instalar PHP 7 con Apache y MariaDB en CentOS 7/Debian 8


La semana pasada (más precisamente el 21 de agosto de 2015), el equipo de desarrollo de PHP anunció la disponibilidad de la última versión de PHP 7 y animó a los usuarios y desarrolladores de todo el mundo a probarla.

Sin embargo, debemos tener en cuenta que, dado que esta es una versión RC (Release Candidate), se espera que tenga errores o incompatibilidades con las configuraciones existentes, por lo que se les pide a los usuarios que los informen utilizando el sistema de seguimiento de errores y que no utilicen PHP 7 en producción mientras permanece en esa fase.

El lado positivo es que esta versión incluye varias correcciones (es posible que desee consultar esta página en el repositorio de GitHub del proyecto para obtener una lista detallada de las nuevas características y mejoras), y la característica más distintiva es un aumento notable del rendimiento en comparación con la anterior. versiones.

Este artículo lo guiará a través del proceso de instalación y compilación de PHP 7 RC1 desde el código fuente junto con Apache y MariaDB en CentOS 7 y Debian 8 Jessie. Las mismas instrucciones también funcionan en distribuciones basadas en CentOS como RHEL, Fedora, Scientific Linux y Debian como Ubuntu/Mint.

Instalación de PHP 7 en CentOS 7 y Debian 8

Como se indicó en la introducción, dado que esta versión es una versión RC en lugar de una versión estable, no podemos esperar razonablemente encontrarla en los repositorios. Por eso, tendremos que descargar el código fuente y compilar el programa desde cero.

Sin embargo, antes de hacer eso, debemos recordar que para aprovechar mejor PHP 7 y quizás la mejor manera de probarlo es instalándolo junto con Apache y MariaDB, que PODEMOS encontrar en los repositorios:

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

En cualquier caso, el tarball con el código fuente de PHP se puede descargar y extraer de la siguiente manera:

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

Una vez hecho esto, vayamos a /opt/php-7.0.0RC1 y ejecutemos el script buildconf con el interruptor –force para forzar la construcción de una versión RC:

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

Ahora es el momento de ejecutar nuestro conocido comando configure. Si bien las siguientes opciones garantizarán una instalación estándar de PHP 7, puede consultar la lista completa de opciones en el manual de PHP para personalizar mejor la instalación según sus necesidades:

# ./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 se encuentra con el siguiente error:

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

Simplemente instale gcc y las dependencias con el siguiente comando y vuelva a ejecutar el comando configure anterior.

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

Estará en camino de compilar PHP 7, lo que puede llevar un tiempo. Si faltan otras bibliotecas o recursos, este proceso fallará, pero siempre puede instalarlos y ejecutar configure nuevamente.

Por ejemplo, tuve que instalar libxml2-devel después de recibir el siguiente mensaje de error:

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

Desafortunadamente, no podemos cubrir todos los escenarios de casos, ya que el software instalado puede variar de un sistema a otro. Durante la instalación, es posible que desee consultar esta página que describe varios errores que puede encontrar al instalar PHP desde la fuente, junto con sus respectivas soluciones.

Aquí hay una lista completa de los paquetes que tuve que instalar en mi caja de CentOS 7 antes de poder completar el proceso de configuración:

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

Puede instalar todos los paquetes requeridos anteriormente con un solo comando yum como se muestra.

# 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 siguiente mensaje indica que la configuración finalizó correctamente:

Entonces corre,

# make
# make install

Cuando la instalación esté completa, puede verificar la versión usando la línea de comando:

En Debian, tuve que instalar los siguientes paquetes para que el proceso de configuración se completara correctamente:

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

Puede instalar todos los paquetes requeridos anteriormente con el comando apt-get en 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

Luego, agregue –with-libdir u003d/lib/x86_64-linux-gnu a las opciones de configuración y cree el siguiente enlace simbólico al archivo de encabezado gmp.h:

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

Luego ejecutó make y make install como en el caso anterior. En 10-15 minutos, la compilación debería haberse completado y podemos verificar la versión de PHP instalada como antes:

# make
# make install

Configuración de php.ini y prueba de la instalación de PHP 7

Cuando instala PHP desde la fuente, se proporcionan dos ejemplos de php.ini. En este caso, se encuentran dentro de /opt/php-7.0.0RC1:

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

Ahora debe copiar uno de ellos en/usr/local/lib, que está designado como la ubicación predeterminada para dicho archivo según las notas de instalación:

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

Y no olvide agregar esta directiva de configuración a los archivos de configuración principales de 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>

En Debian 8 puede omitir la línea LoadModule y también debe eliminar y crear los siguientes enlaces simbólicos a los módulos de Apache indicados:

# 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

Luego, reinicie el servidor web:

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

Si al iniciar Apache en CentOS 7, aparece un mensaje de error que dice que no puede encontrar el módulo libphp7.so, simplemente cópielo en la ruta indicada desde /opt/php-7.0.0RC1/.libs/libphp7.so.

La forma clásica de probar una instalación PHP/Apache es usando un archivo phpinfo() . Cree un archivo llamado test.php con el siguiente contenido en la raíz del documento del servidor web (/ var/www/html en ambas distribuciones):

<?php
phpinfo();
?>

E inicie un navegador en un cliente dentro de su red para probar:

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

Resumen

En este artículo, hemos explicado cómo instalar PHP 7 desde el código fuente, el RC más nuevo de este popular lenguaje de scripting del lado del servidor que tiene como objetivo mejorar el rendimiento a valores sin precedentes. Hasta que alcance el nivel estable en noviembre de este año 2015, se recomienda ENCARECIDAMENTE NO utilizar esta versión en un entorno de producción.

Si tiene alguna pregunta/comentario/sugerencia sobre este artículo, no dude en hacérnoslo saber mediante el formulario a continuación.