Diego França

Configurando o OCI8 e PDO_OCI no PHP7

Fala pessoal!!! Venho trabalhando com o PHP e MySql alguns anos e nos últimos meses precisei fazer a conexão com o Oracle. Passei muito tempo pesquisando e hoje gostaria de criar um tutorial simples para que vocês possam ter uma fonte confiável de como realizar essa instalação. Eu utilizei o Ubuntu 16.04 e o PHP 7.0.

INSTALANDO O OCI8

Primeiramente devemos fazer o download do INSTANT ORACLE e do SDK ORACLE:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
Os arquvios são instantclient-basic-linux.x64-12.2.0.1.0.zip e o instantclient-sdk-linux.x64-12.2.0.1.0.zip

Após o download , vamos criar um diretório para que possamos armazernar os arquivos que fizemos o dowload:
mkdir /opt/oracle

Vamos entrar na pasta que acabamos de criar e extraimos os arquivos:
cd /opt/oracle
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip

Próximo passo, vamos criar um link simbólico para o Instant Client:
ln -s /opt/oracle/instantclient_12_2/libclntsh.so.12.1 /opt/oracle/instantclient_12_2/libclntsh.so

ln -s /opt/oracle/instantclient_12_2/libocci.so.12.1 /opt/oracle/instantclient_12_2/libocci.so

Precisamos adicionar a pasta ao nosso ldconfig:
echo /opt/oracle/instantclient_12_2 >/etc/ld.so.conf.d/oracle-instantclient

E por fim, atualizamos o Update the Dynamic Linker Run-Time Bindings
ldconfig

PACOTES ADICIONAIS

Para instalarmos o OCI precisamos de alguns pacotes extras

Primeiro, rode esse comando :
apt-get install php-dev php-pear build-essential libaio1

Uma vez instaldo os pacotes, nós precisamos do arquivo oci8, antes precisamos de atualizar o PECL:
pecl channel-update pecl.php.net

Então execute:
pecl install oci8

Quando o prompt lhe pedir um caminho, digite:
instantclient,/opt/oracle/instantclient_12_2

Nós precisamos dizer ao PHP para carregar o módulo OCI8:
echo "extension =oci8.so" >> /etc/php/7.0/fpm/php.ini
echo "extension =oci8.so" >> /etc/php/7.0/cli/php.ini
echo "extension =oci8.so" >> /etc/php/7.0/apache2/php.ini

Também precisamos adicionar no apache as variáveis de ambiente:
echo "export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2" >> /etc/apache2/envvars
echo "export ORACLE_HOME=/opt/oracle/instantclient_12_2" >> /etc/apache2/envvars
echo "LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH" >> /etc/environment

Reinicie o seu computador

Para chegar se a extensão foi instalado corretamente, execute:
php -m | grep 'oci8'

Se no seu terminal aparecer oci8, então foi instalado corretamente

Para finalizar a instalação do oci8, basta apensar reiniciar o php-fpm:
service php7.0-fpm restart

INSTALANDO O PDO_OCI

Primeiramente, vamos fazer o download do fonte: http://us1.php.net/get/php-7.0.27.tar.bz2/from/a/mirror

Extraia o fonte:

tar -jxvf7.0.27.tar.bz2

Copie o diretório pdo_oci para a tmp:

sudo cp -r php-7.0.27/ext/pdo_oci /tmp

Entre no diretório que acabamos de criar:

sudo cd /tmp/pdo_oci

Execute os comandos abaixo em sequência:

sudo phpize

sudo ./configure -with-pdo-oci=instantclient,/opt/oracle/instantclient_12_2,12.2

sudo make

sudo make install

Após executar os comandos acima, crie um link simbólico:

$ sudo touch /etc/php/7.0/mods-available/pdo_oci.ini

$ sudo echo extension=pdo_oci.so' > /etc/php/7.0/mods-available/pdo_oci.ini

$ sudo ln -s /etc/php/7.0/mods-available/pdo_oci.ini /etc/php/7.0/apache2/conf.d/20-pdo_oci.ini

Reinicie o apache e o seu ambiente de desenvolvimento PHP já estará preparado para se conectar com o Oracle