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