Pesquisa de site

Como instalar o PHP 7 com Apache e MariaDB no CentOS 7/Debian 8


Na semana passada (mais precisamente em 21 de agosto de 2015), a equipe de desenvolvimento do PHP anunciou a disponibilidade da versão mais recente do PHP 7 e incentivou usuários e desenvolvedores em todo o mundo a testar isto.

No entanto, devemos observar que, como esta é uma versão RC (Release Candidate), espera-se que ela possa ter bugs ou incompatibilidades com as configurações existentes, por isso os usuários estão sendo solicitados a reportá-los usando o sistema de rastreamento de bugs e não usar o PHP 7 em produção enquanto ele permanecer nessa fase.

O lado bom é que esta versão inclui diversas correções (você pode consultar esta página no repositório do GitHub do projeto para obter uma lista detalhada dos novos recursos e melhorias), sendo o recurso mais distintivo um notável aumento de desempenho quando comparado às versões anteriores.

Este artigo orientará você no processo de instalação e compilação do PHP 7 RC1 a partir do tarball de origem junto com o Apache e o MariaDB no CentOS 7 e Debian 8 Jessie. As mesmas instruções também funcionam em distribuições baseadas em CentOS como RHEL, Fedora, Scientific Linux e Debian< baseados em Ubuntu/Mint.

Instalando PHP 7 no CentOS 7 e Debian 8

Como afirmado na introdução, como esta versão é um RC em vez de uma versão estável, não podemos razoavelmente esperar encontrá-la nos repositórios. Por isso teremos que baixar o código fonte e compilar o programa do zero.

Antes de fazermos isso, porém, precisamos lembrar que para aproveitar melhor o PHP 7 e talvez a melhor maneira de testá-lo seja instalando-o junto com o Apache e MariaDB – que PODEMOS encontrar nos repositórios:

No CentOS 7


yum update && yum install httpd mariadb mariadb-server

No Debian 8


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

Em ambos os casos, o tarball com o código fonte do PHP pode ser baixado e extraído da seguinte forma:


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

Uma vez feito isso, vamos para /opt/php-7.0.0RC1 e executar o script buildconf com a opção –force para forçar o construção de uma versão RC:


ls


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

Agora é hora de executar nosso conhecido comando configure. Embora as opções abaixo garantam uma instalação padrão do PHP 7, você pode consultar a lista completa de opções no manual do PHP para personalizar melhor a instalação de acordo com suas necessidades:


./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 você encontrar o seguinte erro:


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

Simplesmente instale o gcc e as dependências com o seguinte comando e execute o comando configure acima novamente.


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

Você estará no caminho certo para compilar o PHP 7, o que pode demorar um pouco. Se houver outras bibliotecas ou recursos ausentes, esse processo falhará, mas você poderá instalá-los e executar o configure novamente.

Por exemplo, tive que instalar libxml2-devel depois de receber a seguinte mensagem de erro:


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

Infelizmente, não podemos cobrir todos os cenários, pois o software instalado pode variar de um sistema para outro. Durante a instalação, você pode consultar esta página que descreve vários erros que você pode encontrar ao instalar o PHP a partir do código-fonte, junto com suas respectivas soluções.

No CentOS 7

Aqui está uma lista completa dos pacotes que tive que instalar na minha caixa do CentOS 7 antes de poder concluir o processo de configuração:


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

Você pode instalar todos os pacotes necessários acima com um único comando yum conforme mostrado.


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

A mensagem a seguir indica que a configuração foi concluída com sucesso:

Então corra,


make
make install

Quando a instalação for concluída, você pode verificar a versão usando a linha de comando:

No Debian 8

No Debian, tive que instalar os seguintes pacotes para que o processo de configuração fosse concluído com êxito:


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

Você pode instalar todos os pacotes necessários acima com o comando apt-get no 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

Em seguida, adicione –with-libdir=/lib/x86_64-linux-gnu às opções de configuração e crie o seguinte link simbólico para o arquivo de cabeçalho gmp.h:


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

Em seguida, executei make e make install como no caso anterior. Dentro de 10-15 minutos a compilação deverá ser concluída e poderemos verificar a versão do PHP instalada como antes:


make
make install

Configurando o php.ini e testando a instalação do PHP 7

Quando você instala o PHP a partir do código-fonte, dois exemplos de php.ini são fornecidos. Neste caso, eles estão localizados dentro de /opt/php-7.0.0RC1:


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

Agora você precisa copiar um deles para /usr/local/lib, que é designado como o local padrão para esse arquivo, conforme as notas de instalação:


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

E não se esqueça de adicionar esta diretiva de configuração aos principais arquivos de configuração do 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>

No Debian 8 você pode omitir a linha LoadModule e também precisa remover e criar os seguintes links simbólicos para os módulos 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

Em seguida, reinicie o servidor web:


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

Se iniciar o Apache no CentOS 7 retornar uma mensagem de erro informando que não foi possível encontrar o módulo libphp7.so, simplesmente copie para o caminho indicado de /opt/php-7.0.0RC1/.libs/libphp7.so.

A maneira clássica de testar uma instalação PHP/Apache é usando um arquivo phpinfo(). Crie um arquivo chamado test.php com o seguinte conteúdo na raiz do documento do servidor web (/var/www/html em ambas as distribuições):


<?php
phpinfo();
?>

E inicie um navegador em um cliente da sua rede para testar:


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

Resumo

Neste artigo explicamos como instalar o PHP 7 a partir do código-fonte, o mais novo RC desta popular linguagem de script do lado do servidor que visa melhorar o desempenho em valores sem precedentes. Até atingir o nível estável em novembro deste ano 2015, você é FORTEMENTE aconselhado a NÃO use esta versão em um ambiente de produção.

Se você tiver alguma dúvida/comentário/sugestão sobre este artigo, sinta-se à vontade para nos informar através do formulário abaixo.