Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Colocando Suporte a Oracle no PHP5 no Debian Etch

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.

1. Instalar pacotes necessários:

  aptitude install dpkg-dev unzip build-essential flex bison libxml2 \
  libxml2-dev libz libz-dev libjpeg-dev libpng-dev libfreetype6-dev

2. baixar da Oracle os pacotes:

  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...

3. Colocar os pacotes em /usr/local

  mv instantclient-basic-linux32-10.2.0.3-20061115.zip /usr/local
  mv instantclient-sdk-linux32-10.2.0.3-20061115.zip  /usr/local

4. Desempacotar os arquivos:

  cd /usr/local/
  unzip instantclient-basic-linux32-10.2.0.3-20061115.zip
  unzip instantclient-sdk-linux32-10.2.0.3-20061115.zip

5. Criar um link simbólico necessário

  ln -sf /usr/local/instantclient_10_2/libclntsh.so.10.1 \
  /usr/local/instantclient_10_2/libclntsh.so

6. Acrescentar ao /etc/ld.so.conf as linhas:

  /usr/local/instantclient_10_2/
  /usr/local/lib/

7. Remover o arquivo /etc/ld.so.cache e regerá-lo:

  rm /etc/ld.so.cache
  ldconfig

8. Para testar se funcionou:

  ldconfig -p | grep instantclient

9. Baixar os fontes do php5:

  cd /usr/src
  apt-get source php5

10. Preparar o php para a compilação do modulo:

  cd php5-5.2.0/ (este diretório pode variar com a versão do php)

11. Limpar o diretório de compilações anteriores

  make clean
  rm config.cache

12. Rodar o configure

  ./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>

Veja a relação completa dos artigos de Conrado Pinto Rebessi

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.99/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1652 votos)

Opinião dos Leitores

Márcio
29 Mar 2012, 13:45
Muito bom o material, porém sugiro utilizar o oci8 do pecl ao inves do ext. pecl install oci8 em seguinda só passar os paramentros do oracle home. Abraço,
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

SEM e SEO - 2ª Edição