Instalando o Oracle Instant Client, PHP e OCI8 no Ubuntu

De um tempo para cá, eu tenho usado o Zend Server em meu ambiente de desenvolvimento PHP para facilitar a minha vida por ele ter o maldito Oracle InstantClient pré-instalado, principalmente por isso pois eu odeio instalar aquela coisa, porém, de uns tempos para cá isso tem me causado problemas pois o client que vem embutido no Zend Server aparente é o Basic Lite que vem com algumas funcionalidades faltando, por exemplo ORA-12737: Instant Client Light: unsupported server character set WE8ISO8859P15, pelo pouco que pesquisei ele não suporta diversos encodings e bibliotecas relacionadas a I18n.

Ontem eu tive o problema supracitado e não foi a primeira vez que tive um problema do gênero, então eu desisti dessa vida fácil, mandei o Zend Server pro espaço e instalei uma VM Vagrant com Ubuntu Server 11.10, PHP, Oracle InstantClient e OCI8 para nunca mais ter problemas deste tipo e os passos necessários para montar este ambiente eu tentarei passar para você, meu querido leitor, logo abaixo.

Preparando ambiente

O PHP que eu instalei neste caso foi o 5.3.x mas creio que funcione com o PHP 5.4.x numa boa também.

Então primeiramente eu instalei o PHP:

sudo apt-get install php5

Depois instalei algumas bibliotecas necessárias para compilar a extensão OCI8 com o pecl:

sudo apt-get install php5-dev build-essential php-pear libaio1

Download do Oracle Client

Será necessário fazer o download do Oracle Client Basic e do SDK (devel) para podermos compilar a extensão OCI8, lembro que você deve fazer o download do pacote BASIC, não confunda com BASIC-LITE senão vai dar a mesma merda coisa que deu com o Zend Server.

Outro ponto importante é que eu fiz o download dos pacotes RPM em vez de usar os outros binários, na verdade eu fiz o download dos outros pacotes mas eu percebi que iria rolar um trabalho braçal, como eu já estava com o pissed off guy mode enabled eu fiz o download dos pacotes novamente, só que desta vez os RPM que são instalados de uma maneira mais automágica. :D

Para fazer o download você deve se cadastrar e se autenticar no site, mas creio que isso não seja problema para você, certo?

Então vá ao endereço: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html e selecione o sistema operaciol desejado. No caso deste post, estou usando como referência o Ubuntu Server 11.10 64 bits, sendo assim eu baixei os seguintes pacotes:

  • oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
  • oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

Convertendo os RPMs para .deb

Como estou usando Ubuntu, preciso converter os pacotes, para isso eu usei o utilitário alien. Para instalar, execute o comando:

sudo apt-get install alien

Em seguida execute:

sudo alien oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
sudo alien oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

Pronto, agora é mandar ver.

Instalação

Instale primeiro o pacote basic e em seguida o devel:

sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.deb

Erro nenhum deve ter ocorrido até o momento, se aconteceu algum problema, tente todos os passos novamente.

Antes de instalarmos o OCI8 via pecl, nós precisamos arrumar um link simbólico que deveria existir mas não existe, caso contrário o pecl vai criar caso:

cd /usr/lib/oracle/11.2/client64/lib/                                                                                                               
ln -s libclntsh.so.11.1 libclntsh.so

Como eu estou usando o PHP 5.3.6, eu instalei o oci8 versão 1.4.5 pois pelo que entendi as versões posteriores não funcionavam com a versão do PHP que eu tinha instalado, o que é um alerta para que eu atualize logo para a versão mais atual do PHP.

Vamos lá:

sudo pecl install --alldeps oci8-1.4.5 

Este processo pode demorar um pouquinho e um certo ponto o instalador irá te pedir o caminho para o instantclient, apenas tecle ENTER que ele buscará automaticamente.

Quando o processo for finalizado, você deve habilitar a extensão inserindo extension=oci8.so no arquivo /etc/php5/apache2/php.ini.

Pronto, está instalado.

Daqui pra frente você deve saber como proceder. Presumo.

Para finalizar

Na minha opinião o Zend Server é um bom produto, porém a Zend deu mole em colocar o client basic-lite, eu não sei qual o motivo que os levaram a fazer isso, mas ele não serve para muita coisa se você for usar o Oracle para um pouco mais do que o arroz com feijão.

É isso moçada, espero que este post possa ajudar outros PHPers.

Abraço.

Post date: 05/07/2012 - 22:02:50