php_oracle
Size: 8579
Comment:
|
Size: 8722
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 115: | Line 115: |
Após o comando acima aparecerá um prompt solicitando a pasta que contém as libs do oracle, digite: | Se após o comando acima aparecer um prompt solicitando a pasta que contém as libs do oracle, digite: |
Line 119: | Line 119: |
Lembrando que o "instantclient," é obrigatório e o restante é a pasta que você extraiu o instantclient | Lembrando que o "instantclient," é obrigatório e o restante é a pasta que você extraiu o instantclient. Outra coisa é que em um servidor que instalei apareceu esse prompt, em outro não. Se não aparecer o prompt pode continuar normalmente. |
ConteúdoBRTableOfContents(3) |
Introdução
Esta página foi concebida em 23/04/2010 com o intuito de ajudar outros administradores/usuários de sistema linux a configurar o php5 com suporte ao banco de dados oracle devido à dificuldade que tive em encontrar material na internet que ensinasse a fazê-lo.
Em uma pesquisa rápida no google sobre como fazer o php se conectar com o oracle até se encontra bastante material no sentido da programação do php em si, porém na maioria dos casos os autores desses materias consideram que o php foi compilado com suporte ao oracle e se limitam a ensinar o programador do site em php como se conectar.
Nesse tutorial não pretendo ensinar como programar em php, até porque só sei o básico mesmo do php. Meu objetivo é ajudar o sysadmin a compilar o php5 com suporte ao oracle.
A idéia dessa primeira contribuição partiu de um artigo que escrevi para o vivaolinux nesta data, porém como o artigo ainda não foi publicado deixarei para postar o link do artigo em outra oportunidade.
Ambiente, Dependências e Downloads
Versões
Para este tutorial foi utilizado as seguintes versões:
- sistema operacional utilizado = ubuntu 9.10 x86_64 (server)
- versão do apache - 2.2.12
- versão do php - PHP 5.2.10-2
- versão do oracle - 10g (aqui é o servidor de banco de dados que já está em produção)
- versão do instant Client - 11.2.0.1.0 6 - versão do oci8 - 1.4.1
Dependências:
- php5-dev
- php5-cli
- php-pear
- libaio1
- O programa unzip (para descompactar os arquivos *.zip)
Downloads:
Para compilarmos o PHP 5 com acesso ao Oracle, primeiramente devemos baixar o "Instant Client Package - Basic" e também o "Instant Client Package - SDK" do site da oracle e baixar o oci8.
Então para baixar os arquivos do site da oracle primeiramente é necessário ser cadastrado na oracle. O cadastro é gratuito. Vou pular a parte do cadastro por entender que essa parte não gera muitas dificuldades.
Então o link para baixar os arquivos é esse:
http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
Precisamos escolher a plataforma conforme o nosso ambiente.
Os links diretos para os arquivos que utilizei nesse arquigo são:
http://download.oracle.com/otn/linux/instantclient/112010/oracle-instantclient11.2-sdk-11.2.0.1.0-1.x86_64.zip http://download.oracle.com/otn/linux/instantclient/112010/oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip
Caso seu linux seja para plataforma 32 bits os links diretos são:
http://download.oracle.com/otn/linux/instantclient/112010/instantclient-basic-linux32-11.2.0.1.zip http://download.oracle.com/otn/linux/instantclient/112010/instantclient-sdk-linux32-11.2.0.1.zip
Para baixar o oci8 acesse o site:
http://pecl.php.net/package/oci8
O link direto para a versão que foi utilizada nesse artigo:
http://pecl.php.net/get/oci8-1.4.1.tgz
Instalação
Aqui no meu ambiente eu já tinha o apache e o php5 instalados, mas suponhamos que os mesmos ainda não estejam instalados. Execute os comandos abaixo
# sudo aptitude update # sudo aptitude install apache2 php5-common php5 php5-dev libapache2-mod-php5 php5-cli build-essential php-pear libaio1 unzip
OBS.: Caso em seu ambiente também já tenha o php5 e o apache instalado você poderá executar o comando acima suprimindo os pacotes que já estejam instalados, ou executar da forma como está. O máximo que irá acontecer é o aptitude atualizar o pacote caso o mesmo esteja desatualizado.
Eu baixei os arquivos na seguinte pasta: /home/cpd/Oracle
Então vamos seguir os seguintes passos:
Entrar na pasta que foi feito o download dos arquivos;
$ cd /home/cpd/Oracle
Com o comando abaixo já assumi o console com o usuário root:
$ sudo su
OBS.: daqui para frente todos os comandos foram executados como root, caso prefira pode executar os comandos com o usuário comum não se esquecendo de adicionar no começo de cada comando a palavra "sudo "
Extrair os arquivos instantclient:
# unzip oracle-instantclient11.2-sdk-11.2.0.1.0-1.x86_64.zip # unzip oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip
Será criada uma pasta em /home/cpd/Oracle com o nome instantclient_11_2.
O pacote Basic extrai os arquivos em /home/cpd/Oracle/instantclient_11_2 e o SDK em /home/cpd/Oracle/instantclient_11_2/sdk .
O nome das pastas pode variar de acordo com a versão do instantclient baixada.
Entrar na pasta extraída e criar os links simbólicos:
# cd instantclient_11_2/ # ln -s libclntsh.so.11.1 libclntsh.so # ln -s libocci.so.11.1 libocci.so
Voltar para a pasta anterior e extrarir o oci8
# cd .. # tar -xvf oci8-1.4.1.tar
Será criada uma pasta oci8-1.4.1 e um arquivo xml. Entrar na pasta criada e rodar um phpize
# cd oci8-1.4.1/ # phpize
Setar a variável ORACLE_HOME com o caminho da pasta que foi extraído o instantclient
# export ORACLE_HOME=/home/cpd/Oracle/instantclient_11_2
Ainda dentro da pasta do oci8 executar o comando:
# ./configure --with-oci8=share,instantclient,/home/cpd/Oracle/instantclient_11_2
Se após o comando acima aparecer um prompt solicitando a pasta que contém as libs do oracle, digite:
instantclient,/home/cpd/Oracle/instantclient_11_2
Lembrando que o "instantclient," é obrigatório e o restante é a pasta que você extraiu o instantclient.
Outra coisa é que em um servidor que instalei apareceu esse prompt, em outro não. Se não aparecer o prompt pode continuar normalmente.
Feito isso executar os comandos:
# make # make install
Se tudo ocorrer certo executar:
# echo extension=oci8.so >> /etc/php5/apache2/php.ini # echo extension=oci8.so >> /etc/php5/cli/php.ini
Restartar o apache:
# /etc/init.d/apache2 restart
Testando
Para testar se o php já está com suporte ao oracle siga os passos adiante:
Criar um arquivo chamado info.php em /var/www com o seguinte conteúdo:
<? phpinfo(); ?>
Usando um browser (de preferência um livre como o firefox) entre no servidor e acesse a página info.php:
http://ip-do-servidor/info.php
Deve aparecer uma página com várias informações, deve ter um campo chamado oci8 e dentre as informações listadas uma delas será OCI8 Support enabled. Algo parecido com a tabela abaixo:
oci8 |
|
OCI8 Support |
enabled |
Version |
1.4.1 |
Revision |
$Revision: 293235 $ |
Active Persistent Connections |
0 |
Active Connections |
0 |
Oracle Instant Client Version |
11.2 |
Temporary Lob support |
enabled |
Collections support |
enabled |
Directive |
Local Value |
Master Value |
oci8.connection_class |
no value |
no value |
oci8.default_prefetch |
100 |
100 |
oci8.events |
Off |
Off |
oci8.max_persistent |
-1 |
-1 |
oci8.old_oci_close_semantics |
Off |
Off |
oci8.persistent_timeout |
-1 |
-1 |
oci8.ping_interval |
60 |
60 |
oci8.privileged_connect |
Off |
Off |
oci8.statement_cache_size |
20 |
20 |
Erros conhecidos
Se após o comando make apresentar o seguinte erro:
-L/home/cpd/Oracle/antigos/instantclient -lclntsh -Wl,-rpath -Wl,/home/cpd/Oracle/antigos/instantclient -Wl,-soname -Wl,oci8.so -o .libs/oci8.so /usr/bin/ld: skipping incompatible /home/cpd/Oracle/antigos/instantclient/libclntsh.so when searching for -lclntsh /usr/bin/ld: cannot find -lclntsh collect2: ld returned 1 exit status make: *** [oci8.la] Error 1
Verifique a versão do ubuntu com o comando:
# uname -a Linux intrateste 2.6.31-14-server #48-Ubuntu SMP Fri Oct 16 15:07:34 UTC 2009 x86_64 GNU/Linux
E verifique se a versão instalada é de 32 bits ou 64 bits e se combina com a versão do instant client da oracle baixada.
Referências Bibliográficas
Para criar essa wiki me utilizei das seguintes referências:
- Dicas de outro sysadmin da empresa
http://www.vivaolinux.com.br/artigo/Compilando-PHP-5-com-suporte-a-Oracle-sem-misterios/?pagina=1
Créditos
Autor: |
Daniel Rodrigues |
Data: |
23/04/2010 |
php_oracle (last edited 2011-09-19 23:19:33 by localhost)