A instalação deste PHP foi configurada com algumas opções interessantes, como suporte à Dtrace, Pthreads etc. Ao final estão algumas explicações sobre algumas opções da configuração. Caso queira se aprofundar em cada uma delas, pesquise.
Pare o Apache:
# apache2 stop
Às vezes é preciso dar um refresh na página para verificar se o Apache parou mesmo, principalmente quando se está acessando em rede de uma máquina remota.
Instalando o PEAR:
# aptitude install php-pear
Instalando os pacotes necessários para a configuração de alguns módulos do PHP 7.
# aptitude install systemtap-sdt-dev
# aptitude install libicu-dev libmcrypt-dev
# aptitude install libpcre3 libpcre3-dev
# aptitude install libxml2 libxml2-dev libxslt1.1 libxslt1-dev
# aptitude install libjpeg62-turbo-dev libpng12-dev
Criando o diretório de instalação do PHP:
# mkdir /opt/php7
Estando dentro de /usr/src, faça o download do PHP 7:
# cd /usr/src
# wget -O php-7.0.4.tar.gz http://php.net/get/php-7.0.4.tar.gz/from/this/mirror
# tar -xzvf php-7.0.4.tar.gz
# cd php-7.0.4
Para ver as opções de configurações, se quiser:
# ./configure --help
# ./configure --prefix=/opt/php7 --exec-prefix=/opt/php7 --enable-maintainer-zts --enable-mbstring --enable-ftp --enable-zip --enable-exif --enable-pcntl --enable-intl --enable-opcache --enable-pdo --enable-debug --enable-dtrace --enable-xml --enable-libxml -enable-cgi --enable-cli --with-apxs2=/opt/apache2/bin/apxs --with-pgsql=/usr --with-pdo-pgsql=/usr --with-xsl=/usr --with-libxml-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-pcre-dir --with-pcre-regex --with-pear=/usr --with-tsrm-pthreads --with-mcrypt=static
Deverá terminar:
Thank you for using PHP.
config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
Em caso de erro, execute make clean, analise a mensagem, corrija e repita o ./configure.
Caso seja necessário, exclua a pasta php-7.0.4 e descompacte o arquivo php-7.0.4.tar.gz de novo e repita a partir do ./configure.
Construindo:
# make
Terminará:
Build complete.
Don't forget to run 'make test'.
Testando:
# make test
Isso demora um pouco.
Caso der a mensagem de FAILED TEST SUMMARY ao final, ignore e siga em frente.
Terminará:
You can then email it to qa-reports@lists.php.net later.
Do you want to send this report now? [Yns]: Y
E digite seu e-mail, ajudará os próximos.
Instalando:
# make install
Isso é rápido.
Habilitando Phar (PHP Archives):
# /usr/src/php-7.0.4/build/shtool install -c ext/phar/phar.phar /opt/php7/bin
# ln -s -f phar.phar /opt/php7/bin/phar
Em caso de erro evidente em alguma etapa, execute make clean estando dentro do diretório php-7.0.4, apague e recrie a pasta /opt/php7 e refaça a operação desde o ./configure.
Se futuramente decidir mudar as opções de seu ./configure depois da instalação, somente repita os últimos 4 passos (./configure, make, make test e make install) e depois reinicie o Apache.
Copiando o php.ini:
# cp php.ini-development /opt/php7/php.ini
Qualquer alteração a partir de agora, faça no arquivo /opt/php7/php.ini e depois reinicie o Apache. Atente se for PHP para desenvolvimento ou produção, e copie o arquivo certo para teu caso (development ou production).
Vejamos o que diz o próprio PHP:
O PHP vem com dois arquivos INI. Um é recomendado para ser usado em ambientes de produção e outro é recomendado para ser utilizado em ambientes de desenvolvimento.
php.ini-production - contém configurações que possuem segurança, desempenho e melhores práticas em seu núcleo. Mas lembre-se, estas definições podem quebrar algumas compatibilidades com aplicativos de segurança mais antigos. Nós recomendamos usar o arquivo production.ini em ambientes de produção e teste.
php.ini-development - é muito semelhante ao arquivo de produção, exceto que ele é muito mais detalhado quando se trata de erros. Recomendamos o uso da versão de desenvolvimento apenas em ambientes de desenvolvimento. Erros mostrados para os usuários podem, inadvertidamente, vazar informações vitais.
E adicione/mude no httpd.conf (
vim /opt/apache2/conf/httpd.conf) do Apache 2 nas seguintes posições:
#Listen 12.34.56.78:80
Listen 127.0.0.1:80 #Ou coloque o IP do teu servidor, mas sempre coloque um IP nesta opção.
Aqui:
<IfModule dir_module>
DirectoryIndex index index.html index.php default.php main.php
</IfModule>
E coloque no final do arquivo:
# Nesta linha abaixo tu acrescenta as extensões que quiser para que o Apache as reconheça.
AddType application/x-httpd-php .php .html .phtml .asp
AddType application/x-httpd-php-source .phps
PHPIniDir "/opt/php7"
#
# Parâmetros do fcgid
FcgidMaxProcesses 50
FcgidFixPathinfo 1
FcgidProcessLifeTime 0
FcgidTimeScore 3
FcgidZombieScanInterval 20
FcgidMaxRequestsPerProcess 0
FcgidMaxRequestLen 33554432
FcgidIOTimeout 120
#
#AddHandler fcgid-script .php
#Essa opção se descomentada provoca o aviso "Forbidden You don't have permission to access /index.php on this server.", mas permite o acesso ao localhost através do index.html. Com essa opção descomentada tu podes configurar depois no httpd.conf o acesso para somente as pastas as quais que tu quer que sejam acessadas.
#Options +ExecCGI
#FCGIWrapper /opt/apache2/cgi-bin/php7 .php
Ou coloque somente nos vhost que você quer habilitar o fcgid no Apache2 em substituição às 3 últimas linhas acima:
Options Indexes ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /opt/apache2/cgi-bin .php
Testando a instalação:
# cd /opt/apache2/htdocs
# vim index.php
Coloque dentro o seguinte conteúdo:
<?php
phpinfo();
?>
Salve e saia do arquivo.
Inicie o Apache:
# apache2 start
Abra o navegador e digite na URL:
localhost/index.php
Deverá aparecer a página com as configurações do PHP: PHP Version 7.0.4
Verifique as duas primeiras opções das informações de System (Sistema) e Build Date (Data da Construção). Aqui ficou assim:
System Linux Seibei 4.2.0 #1 SMP Tue Sep 15 13:08:24 BRT 2015 x86_64
Build Date Fev 27 2016 16:55:11
Mais abaixo procure por pdo_pgsql, pgsql e verifique se o POstgreSQL 9.5.1 foi devidamente reconhecido. Nesta página, tu podes também verificar se todos os módulos e funções utilizadas no ./configure estão corretamente identificados.