Instalando OCI8 e Oracle Instant Client no Ubuntu

Uma maneira fácil de acessar banco de dados Oracle com PHP é utilizar conexão pela interface Oracle Call Interface (OCI). Para isso você deverá ter o cliente Oracle e o OCI configurado em seu servidor.

Se você já fez isso sabe como é chato ter que compilar o Instant Client Oracle e depois o OCI com as propriedades corretas para que funcionem. Em uma dessas tentativas pensei em utilizar pacotes rpm disponíveis no site da Oracle para instalar a extensão no Ubuntu e o resultado foi positivo. Veja como instalar fácilmente suporte a Oracle no PHP em seu servidor linux.

1. Pacotes

Antes de tudo certifique-se que você tem os seguintes pacotes instalados: php5-dev, build-essential, php-pear e também libaio1.
Se você não tiver os pacotes pode instalar todos utilizando o comando:

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

2. Download

Próximo passo é fazer o download dos pacotes rpm necessários para a instalação do cliente Oracle. Você irá precisar dos seguintes arquivos:

Basic – oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm ~ 44MB
Devel – oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm ~ 590KB

Atenção para a versão do seu sistema. Caso seu sistema for 64 bits deverá baixar a versão apropriada.

Todas as versões do cliente podem ser encontradas no link abaixo.

Download Oracle Instant Client:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

3. Convertendo Pacotes

O que temos que fazer é converter os pacotes tipo rpm para tipo deb utilizando o Alien.

Instalando o Alien

sudo apt-get install alien

Com o Alien instalado basta converter os pacotes:

sudo alien oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
sudo alien oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm

Neste ponto o Alien converteu seus arquivos para pacotes tipo deb, olhando na mesma pasta você deverá encontrar os arquivos convertidos.

4. Instalando o Cliente

Agora basta instalarmos o cliente utilizando os pacotes tipo deb.

sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.2.0.i386.deb

5. Instalando OCI8/PHP

Seu cliente Oracle ja está instalado, próximo passo é a instalação da extensão PHP OCI8.

 sudo pecl install oci8 

Atenção: Durante a instalação será solicitado para entrar com o caminho  do cliente Oracle. Basta deixar em branco e o sistema irá encontrar a o caminho do instant client automaticamente. (Fácil não?)

6. Configurando

OCI8 instalado agora é só informar ao PHP para utilizar a extensão.

Crie um arquivo chamado oci8.ini com o conteúdo: extension=oci8.so
Salve o arquivo na pasta /etc/php5/conf.d/ e reinicie o Apache.

 sudo /etc/init.d/apache2 restart 

Se tudo ocorreu bem o Apache vai reiniciar sem problemas. Você pode conferir a instalação rodando um phpinfo() no servidor.

Um exemplo simples de script para testar a conexão.

<?php
$dbstr ="(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
))";

if($conn0 = oci_connect('usuario','senha', $dbstr)):
    print "CONECTADO EM 192.168.1.1";
else:
    print "ERRO NA CONEXAO";
endif;
?>

Servidor pronto para trabalhar com PHP e Oracle.
Para saber mais sobre OCI8 com PHP consulte a documentação oficial em http://br3.php.net/manual/pt_BR/book.oci8.php

Gostou? Compartilhe.

Compartilhe:

Postado por tpastorello

Leia Mais:

11 respostas para “Instalando OCI8 e Oracle Instant Client no Ubuntu”

  1. Gilberto Bentive disse:

    Mto bom, sempre é bom ter uma alternativa mais fácil.

  2. Marcelo disse:

    Funcionou perfeitamente, obrigado. Abraços

  3. Tiago Fick disse:

    Bah! Parabéns pelo post…estou iniciando com Linux, e foi perfeito. Segui todos os passos e tá tudo funcionando perfeitamente. Simples e claro.

    Muito obrigado e mais uma vez parabéns.

  4. Fernando Mertins disse:

    Perfeito, funcionou tudo certinho, obrigado!

  5. Marcos disse:

    Efetuei todos os procedimentos acima e me retorna o seguinte
    Warning: ocilogon(): ORA-24408: could not generate unique server group name in /var/www/index.php on line 14

    ERRO NA CONEXAO

    A base existe e funciona corretamente conectando via sqlDeveloper da oracle.
    ja tentei com oci_connect, ociLogon, …
    Sabe o que ocorre?

  6. Michel disse:

    Estava com o mesmo problema, o que fiz foi

    sudo /etc/hostname

    e alterei o conteudo para 127.0.0.1
    no meu caso este conteudo tinha sido alterado anteriormente.

  7. waldinei disse:

    Parabéns, funcionou na primeira, olhei muitos lugares mas aqui achei a solução.

    obrigado por compartilhar o conhecimento.

    Da mesma forma que recebi vou repassar o mais que puder.

    Abraço

  8. halek disse:

    Funcionou sem mais problemas.

    Xubuntu 12.10
    Oracle 11g

    Valeu !

  9. André disse:

    Ao chegar ao passo 5, tenho o seguinte erro:

    sudo pecl install oci8
    No releases available for package “pecl.php.net/oci8”
    install failed

    Alguma ideia do que pode estar acontecendo?

    Obrigado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *