Categories: apachenullPHP

Instalar PHP5.3 no ubuntu 14.04

Esta dica teoricamente funciona também nas versões mais recentes do ubuntu.

Estes dias um antigo cliente meu entrou em contato solicitando a árdua tarefa de instalar o PHP  5.3 na última versão LTS do ubuntu (no momento em que escrevo é a 14.04).

Meu primeiro pensamento, foi baixar o tarball e compilar no servidor. Depois de mais de uma hora resolvendo dependências de bibliotecas, me deparo com erro na hora do make que eram basicamente questões relativas a versão de compilador, sendo praticamente impossível resolver (e olha que tentei).

Logo surgiu a ideia de buscar algum PPA que contenha esta versão, que também foi em vão, pois descobri que mesmo os repositórios que, em alguns artigos na internet diziam que continham esta versão do PHP, já haviam atualizado para as mais novas.

Quando tudo estava perdido, eis que surge uma ideia muito maluca. E se eu adicionasse os repositórios do ubuntu 12.04, deveria haver algum jeito de forçar o apt a utilizar pacotes de um determinado repositório.

Então, sem mais delongas, segue a receita de bolo:

Primeiro vamos criar um arquivo contendo os repositórios do ubuntu precise (12.04)

/etc/apt/sources.list.d/precise.list

deb http://mirror.rackspace.com/ubuntu/ precise main restricted
deb-src http://mirror.rackspace.com/ubuntu/ precise main restricted
deb http://mirror.rackspace.com/ubuntu/ precise-updates main restricted
deb-src http://mirror.rackspace.com/ubuntu/ precise-updates main restricted
deb http://mirror.rackspace.com/ubuntu/ precise universe
deb-src http://mirror.rackspace.com/ubuntu/ precise universe
deb http://mirror.rackspace.com/ubuntu/ precise-updates universe
deb-src http://mirror.rackspace.com/ubuntu/ precise-updates universe

Agora o “pulo do gato”, fazer com que os pacotes do PHP e do Apache utilizem este repositório

/etc/apt/preferences.d/php_precise

Package: php5
Pin: release a=precise
Pin-Priority: 1001

Package: php*
Pin: release a=precise
Pin-Priority: 1001

Package: php-*
Pin: release a=precise
Pin-Priority: 1001

Package: libapache2-mod-php5
Pin: release a=precise
Pin-Priority: 1001

Package: php5
Pin: release a=precise-updates
Pin-Priority: 1001

Package: php*
Pin: release a=precise-updates
Pin-Priority: 1001

Package: php-*
Pin: release a=precise-updates
Pin-Priority: 1001

Package: libapache2-mod-php5
Pin: release a=precise-updates
Pin-Priority: 1001

Package: apache2-*
Pin: release a=precise
Pin-Priority: 1001

Package: apache2-*
Pin: release a=precise-updates
Pin-Priority: 1002

Package: apache2*
Pin: release a=precise
Pin-Priority: 1001

Package: apache2*
Pin: release a=precise-updates
Pin-Priority: 1002

OBS: Os pacotes do apache são necessários caso você vá utilizar mod_php, se for utilizar php-fpm ou php-cgi, basta retirar os grupos referentes ao apache no arquivo acima.

Agora basta instalar os software e “voilà”

apt-get update
apt-get install apache2 php5 libapache2-mod-php5

Todo esses procedimentos que citei (compilação, procura de ppa, testes), levaram horas do meu tempo livre, então se você estiver lendo isso e lhe for útil, um belo agradecimento seria um compartilhamento no facebook! 😉

Felipe Braz

Recent Posts

online ansible vault tool

A criação e validação de credenciais seguras em ansible sempre gera um pouco de dor…

2 anos ago

Magento e o mistério do servidor somente-leitura

Dia desses, um dos meus servidores entrou com o sistema de arquivos / em modo…

5 anos ago

Localização de arquivos .desktop no ubuntu

O launcher do ubuntu não fornece muitas opções me relação aos icones, muitas vezes apps…

5 anos ago

Ordenar array por tamanho em php

Três meios diferentes para a mesma finalidade: Usando funções nativas do PHP (recomendado): array_multisort(array_map('strlen', $array),…

5 anos ago

Adicionar suporte a rc.local no ubuntu 16.04 ou superior

Embora um script muito útil para tarefas de inicialização de um servidor, essa funcionalidade se…

5 anos ago

API json registro.br gratuita

Pra que precisa de uma API pra consultar domínios .br é só utilizar a pagina…

5 anos ago