De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Conrado Pinto Rebessi
Data de Publicação: 26 de Março de 2007
Resolvi escrever este artigo quando li o artigo do Gabriel Fernandes em : http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5328 e fiquei frustrado por não conseguir, então tentei de outras formas, consegui, e documento abaixo.
aptitude install dpkg-dev unzip build-essential flex bison libxml2 \ libxml2-dev libz libz-dev libjpeg-dev libpng-dev libfreetype6-dev
instantclient-basic-linux32-10.2.0.3-20061115.zip instantclient-sdk-linux32-10.2.0.3-20061115.zip
Ou versões mais novas, todos disponíveis em: http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
Lógico que um pequeno cadastro deve ser feito para acessar estes downloads...
mv instantclient-basic-linux32-10.2.0.3-20061115.zip /usr/local mv instantclient-sdk-linux32-10.2.0.3-20061115.zip /usr/local
cd /usr/local/ unzip instantclient-basic-linux32-10.2.0.3-20061115.zip unzip instantclient-sdk-linux32-10.2.0.3-20061115.zip
ln -sf /usr/local/instantclient_10_2/libclntsh.so.10.1 \ /usr/local/instantclient_10_2/libclntsh.so
/usr/local/instantclient_10_2/ /usr/local/lib/
rm /etc/ld.so.cache ldconfig
ldconfig -p | grep instantclient
cd /usr/src apt-get source php5
cd php5-5.2.0/ (este diretório pode variar com a versão do php)
make clean rm config.cache
./configure --with-oci8=shared,instantclient,/usr/local/instantclient_10_2
Se tudo der certo, no meio das dezenas de linhas que passarão na tela, deve haver uma, dentro da sessão Configuring extensions, como: ... Configuring extensions ... checking for Oracle (OCI8) support... yes, shared ...
Agora, o velho e bom:
make
Faz o trabalho sujo de compilação. Num Dual Xeon, dual core com 2Gb de RAM este processo demorou pouco mais de 5 minutos, em outras máquinas pode demorar um pouquinho mais :-).
Terminado isto, o módulo deve estar disponível no subdiretório modules, devendo ser copiado para o diretório de módulos do php5
cp modules/oci8.so /usr/lib/php5/20060613+lfs/
Acrescentamos então a seguinte linha ao /etc/php5/apache2/php.ini
extension=oci8.so
Fazemos o Apache reler os arquivos de configuração
/etc/init.d/apache2 reload
E podemos verificar se o php entende o módulo oci8, verificando o phpinfo(); Eu costumo criar um arquivo /var/www/apache2-default/teste.php, com o conteúdo:
<? phpinfo(); ?>
Acessar este arquivo em qualquer navegador:
lynx http://<servidor>/apache2-default/teste.php
E procurar por uma parte mostrando o oci8 habilitado. No meu caso apareceu uma seção como a abaixo:
oci8 OCI8 Support enabled Version 1.2.2 Revision $Revision: 1.269.2.16.2.25 $ Active Persistent Connections 0 Active Connections 0 Oracle Instant Client Version 10.2 Temporary Lob support enabled Collections support enabled Directive Local Value Master Value oci8.default_prefetch 10 10 oci8.max_persistent -1 -1 oci8.old_oci_close_semantics 0 0 oci8.persistent_timeout -1 -1 oci8.ping_interval 60 60 oci8.privileged_connect Off Off oci8.statement_cache_size 20 20
Ótimo! O nosso php já tem suporte a Oracle. Como último teste, usamos uma pequena classe que faz um acesso básico ao banco de dados para testar a conexão. Criamos o arquivo /var/www/apache2-default/Class.ConectOci.php , com o conteúdo: OBS.: As informações de conexão, na última linha do script devem ser alteradas para refletir o ambiente usado. OBS2.: Esta classe foi graciosamente cedida pelo Daniel Lima para me auxiliar no artigo.
<?php // +----------------------------------------------------------------------+ // | File::Class.ConectOci.php | // +----------------------------------------------------------------------+ // | Copyright (c) 2005 | // +----------------------------------------------------------------------+ // | Author : Daniel Antonio de Lima | // | Data : 08/08/2005 | // | Hora : 11:25:00 | // +----------------------------------------------------------------------+ // | Version: 1.0.0 | // +----------------------------------------------------------------------+ // | Method: | // +----------------------------------------------------------------------+ // Definições de Parametros do Sistema class MyConect{ #conexão com banco de Dados var $host; #Qual é o servidor var $db; #Qual é o banco de dados var $user; #Qual é o usuário var $pass; #Qual é o password function conect($host="",$db="",$user="",$pass=""){ $this->socket = ociplogon($user,$pass,$host."/".$db); IF ( $this->socket == false ){ //echo OCIError($this->socket)."<BR>"; echo "Problemas"; exit; } else { ECHO "Conectado com sucesso.!!!"; } } function CloseDB(){ return $this->CloseData = @oci_close($this->socket); } } $Conexao = new MyConect; $Conexao->conect("<servidor_oracle>","<base_de_dados>","<usuário>","<senha>"); ?>
E o acessamos de qualquer navegador:
lynx http://<servidor>/apache2-default/Class.ConectOci.php
Devemos então receber uma mensagem de sucesso:
Conectado com sucesso.!!!
E correr pro abraço!
Conrado Pinto Rebessi conradopinto <arroba> yahoo <ponto> com <ponto>
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários