Suporte PHP5 oci8 no Oracle 11g - Ubuntu 8.04 Server

Publicado por Rommel Campos de Araújo em 01/07/2009

[ Hits: 12.123 ]

 


Suporte PHP5 oci8 no Oracle 11g - Ubuntu 8.04 Server



Após uma longa batalha travada com o Oracle e o PHP5, com artigos fragmentados e que não funcionavam, finalmente concluí a instalação da extensão oci8.

1 - Instalar os pacotes necessários.

# apt-get install dpkg-dev unzip build-essential flex bison libxml2 libxml2-dev libz libz-dev libjpeg-dev libpng-dev libfreetype6-dev

2 - Baixar os pacotes Instantclient do Oracle.

Salve os arquivos onde você quiser, aconselho criar uma pasta no /opt chamada "instantclient", pois será usada nos exemplos a seguir.

# mkdir /opt/instantclient

Após a instalação será necessário baixar dois pacotes do site do Oracle, os pacotes são os seguintes:
  • instantclient-basic-linux32-11.1.0.7.zip
  • instantclient-sdk-linux32-11.1.0.7.zip

e o link é:
Você terá que fazer um cadastro rápido para baixar os arquivos.

3 - Descompactar os arquivos.

Baixou? Salvou? Ok, descompacte os arquivos.

# unzip instantclient-basic-linux32-11.1.0.7.zip
# unzip instantclient-sdk-linux32-11.1.0.7.zip


Será gerada uma pasta chamada "instantclient_11_1" e o caminho completo deve ser esse /opt/instantclient/instantclient_11_1.

4 - Link simbólico necessário:

# ln -sf /opt/instantclient/instantclient_11_1/libclntsh.so.11.1 /usr/local/instantclient_11_1/libclntsh.so

5 - Acrescentar o caminho do Instantclient ao /etc/ld.so.conf

# vi /etc/ld.so.conf

Adicione as seguintes linhas:

/opt/instantclient/instantclient_11_1
/usr/local/lib/

6 - Apagar o arquivo /etc/ld.so.cache e regerá-lo:

# rm /etc/ld.so.conf
# ldconfig


7 - Garanta que seu instantclient esteja ok:

# ldconfig -p | grep instantclient

8 - Baixando os sources do PHP5:

# cd /opt
# mkdir php5
# cd php5
# apt-get source php5


9 - Preparando e compilando:

# cd php5-5.2.4 (pode variar diante da versão)

Vamos limpar o diretório de compilações anteriores:

# make clean
# rm config.cache


e finalmente...

# ./configure --with-oci8=shared,instantclient,/opt/instantclient/instanclient_11_1

Se tudo der certo, deve haver uma mensagem dentro da sessão "Configuring extensions" como:

"... Configuring extensions ... checking for Oracle (OCI8) support... yes, shared ..."

# make

10 - Copiando para o diretório de modules do PHP5:

# cp /opt/php5/php5-5.2.4/modules/oci8.so /usr/lib/php5/20060613+lfs/

11 - Acrescentando a extensão no php.ini:

Procure a sessão extension (pode ser qualquer linha) em /etc/php5/apache2/php.ini e adicione o seguinte conteúdo:

extension=oci8.so

12 - Reiniciar o Apache para que os novos arquivos possam ser lidos:

# /etc/init.d/apache2 restart

13 - Crie dentro de /var/www um arquivo chamado index.php:

# vi /var/www/index.php

e adicione:

<?
phpinfo();
?>

Acesse http://localhost/index.php (local) e http://ipdoservidor/index.php e procure pelo módulo oci8, se ele aparecer, pode ficar feliz, está tudo ok.

Pronto, você acaba de fazer uma instalação completa do PHP5 com suporte ao Oracle 11g. Para outras versões do Oracle, acredito que só mude o istantclient.

Tentei facilitar ao máximo a compreensão para que qualquer pessoa, seja iniciante ou mestre, consiga fazer rápido.

Dúvidas, estou a disposição.

Outras dicas deste autor

Driver VIA UniChrome Pro IGP - Ubuntu 8.x Linux

Controle de banda com CBQ

Leitura recomendada

Mostrar os campos de uma tabela do PostgreSQL com PHP

Paginação com ADODB

Mensagem de erro: "PHP Fatal error: Call to undefined function pg_connect()" [Resolvido]

Enviando parâmetros para o Google e gravando o resultado em banco

Portal TechRoot

  

Comentários
[1] Comentário enviado por wryel em 02/07/2009 - 09:37h

Thanks for share !

eu ja fiz a ligação do oracle com o php no windows e também não foi trivial.Eu ainda não tive a oportunidade de tesar no linux, mas pretendo nas proximas semana o fazer.

[]'s

[2] Comentário enviado por rommelhc em 02/07/2009 - 10:06h

Caso ocorra algum erro, defina o $ORACLE_HOME (deve ser o caminho do oracle)
como definir ?

# export ORACLE_HOME=/diretoriodooracle


Desculpem o esquecimento.

[3] Comentário enviado por adrianoc em 13/12/2009 - 13:47h

Muito legal o artigo, ajudou bastante mas para funcionar no debian lenny só é preciso:

1) acrescentar a biblioteca "libaio" no passo "1 - Instalar os pacotes necessários.", um apt-get install libaio1 já basta.

2) não precisa escrever nada no php.ini, mas é necessário criar o arquivo /etc/php5/conf.d/oci8.ini com o conteúdo extension=oci8.so

E só mais um dica pessoal, fiquem de olho nos LOGs, muitas vezes eles querem falar com a gente e ficamos dispercebidos.

Um agradecimento especial do ecl, do canal IRC php-br.

um abraço a todos !!!



Contribuir com comentário