Instalando fácil o oci8 e pdo_oci
Autor: Rodrigo Octávio Cabral Maduro | Publicado: 2016-08-29T00:31:00-04:00



Instalando fácil o oci8 e pdo_oci, testado no xubuntu 16.04


Estava eu em casa lendo sobre python e vando a possibilidade de usar com oracle e esbarrei nas configurações do instantclient do oracle…

Percebi o quanto é simples configurar e pensei, vou tentar simplificar no php também

Partindo do pressuposto de que seria simples, não usei as versões em zip files, usarei as versões em rpm e converter pra deb

Segue os passos



Qual a arquitetura do seu linux, isso é muito importante, 32 ou 64 bits





Baixe do site da oracle a versão em rpm dos seguintes arquivos, linux 64



oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm


oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm





ou linux 32


oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm


oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm






Instalando o php built-in web server…



Usei esse repositório para instalar o php https://launchpad.net/~ondrej/+archive/ubuntu/php


sudo apt install -y php5.5-cli php5.5-curl php5.5-dev php5.5-json php5.5-mcrypt build-essential php-pear libaio1 alien






Convertendo pacotes



sudo alien --scripts --to-deb oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm


sudo alien --scripts --to-deb oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm






Instalando pacotes



sudo dpkg -i oracle-instantclient12.1-basic_12.1.0.2.0-2_amd64.deb


sudo dpkg -i oracle-instantclient12.1-devel_12.1.0.2.0-2_amd64.deb






Configurando o ambiente, na arquitetura do linux 64 a pasta é client64 na 32 é client



sudo sh -c 'echo "/usr/lib/oracle/12.1/client64/lib" &gt; /etc/ld.so.conf.d/oracle.conf


sudo ldconfig #(isso só nessa vez, depois de reiniciar o pc fica automático)


mkdir -p /usr/lib/oracle/12.1/client64/network/admin (pra configurar o tnsnames.ora)






Configurando /etc/profile.d/oracle.sh 




export ORACLE_BASE=/usr/lib/oracle

export ORACLE_HOME=$ORACLE_BASE/12.1/client64

export TNS_ADMIN=$ORACLE_HOME/network/admin


if [ $?LD_LIBRARY_PATH ]; then

 &nbsp;&nbsp;&nbsp;export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

else

 &nbsp;&nbsp;&nbsp;export LD_LIBRARY_PATH=$ORACLE_HOME/lib

fi


export PATH=$PATH:$ORACLE_HOME/bin



source /etc/profile.d/oracle.sh #(isso só nessa vez, depois de reiniciar o pc fica automático)






Instalando o oci8, mas antes de mais nada verifique o site https://pecl.php.net/package/oci8 pra verificar a versão do oci8 para seu php, no meu caso Instalei o PHP 5.5.38



sudo pecl install oci8-2.0.12





Atenção: Durante a instalação será solicitado para entrar com o caminho do cliente Oracle

Basta deixar em branco e o sistema irá encontrar o caminho do instantclient automaticamente. (Fácil não?)



Salve no /etc/php/5.5/mods-available/oci8.ini o extension=oci8.so e execute sudo phpenmod oci8





Execute php -i |grep -i oci, pra verificar se esta ativo o oci8





Agora vamos configurar o pdo_oci…



sudo pecl channel-update pear.php.net


sudo mkdir -p /tmp/pear/download/


cd /tmp/pear/download/


sudo pecl download pdo_oci






Extraindo…



sudo tar xzvf PDO_OCI*.tgz


cd PDO_OCI






No arquivo pdo_oci.c, na linha 34 troque function_entry por zend_function_entry





No arquivo config.m4…



nas linhas 10 e 11 respectivamente adicioneelif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.12.1; then&nbsp;&nbsp;&nbsp; PDO_OCI_VERSION=12.1


se seu linux for 64 bits adicione 64 no final das palavras client (Ex. cliente64) das linhas 60,61,62 e 69


nas linhas 122, 123 e 124 respectivamente adicione12.1)&nbsp;&nbsp;&nbsp; PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)&nbsp;&nbsp;&nbsp; ;;


apague da linha 182 a 200






Pronto… agora em só executa



sudo phpize5.5


sudo ./configure -with-pdo-oci=instantclient,/usr,12.1


sudo make &amp;&amp; sudo make test &amp;&amp; sudo make install






Salve no /etc/php/5.5/mods-available/pdo_oci.ini o extension=pdo_oci.so e execute sudo phpenmod pdo_oci





Execute php -i |grep -i oci, pra verificar se esta ativo o oci




Agora é só programar…