Compilar o PDO_OCI
para acessarmos o banco oracle por nosso PHP
, em um ambiente Linux
.
Esta é, uma das maiores dificuldades que encontramos ao utilizar o PHP
com Linux
no ambiente empresarial, pois não temos nativamente uma configuração fácil para acessar bancos Oracle
em nosso ambiente.
Estarei fazendo este tutorial no Debian 8, provavelmente funcione na sua distribuição também, caso não deixe nos comentários seu relato e como resolveu, é claro…
É um trabalho um pouco extenso então vamos começar.
Antes de mais nada vamos atualizar nossos pacotes.
sudo apt-get update
Agora vamos instalar o pacote libaio1
sudo apt-get install libaio1
Para Evitar Alguns possiveis Problemas certifique-se de ter instalado php5-mysql
:
sudo apt-get install php5-mysql
Precisamos baixar alguns pacotes do instantclient
para que tudo funcione corretamente:
E mais este :
Agora precisamos instalar estes pacotes baixados, entre dentro da pasta em que efetuou o download, e execute para instalar o primeiro pacote:
sudo dpkg -i oracle-instantclient11.2-basic_11.2.0.4.0-2_amd64.deb
E para instalar o segundo pacote:
sudo dpkg -i oracle-instantclient11.2-devel_11.2.0.4.0-2_amd64.deb
Precisaremos criar agora alguns links simbólicos, execute:
sudo ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
E mais este link simbólico:
sudo ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
Agora precisamos fazer o download deste PDO_OCI
:
Agora vá até a pasta em que baixou este PDO_OCI
e vamos executar o seguinte comando:
sudo tar -xvf pdo_oci
Repare que foi criado uma pasta, agora entre na pasta que foi descompactada…
cd PDO_OCI-1.0/
Dentro desta pasta temos que fazer um patch em um dos arquivos, então vamos criar um arquivo de patch
:
sudo touch config.m4.patch
Escolha seu editor e edite o arquivo criado acima e vamos adicionar as seguintes informações, caso utilize o gedit, pode executar:
sudo gedit config.m4.patch
Estas serão as informações adicionadas no nosso arquivo de patch
.
9a10,11
> elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
> PDO_OCI_VERSION=11.2
119a122,124
> PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
> ;;
> 11.2)
Após isso faremos um patch
do arquivo:
sudo patch config.m4 < config.m4.patch
Para rodar o próximo comandos precisamos instalar mais 1 pacote:
sudo apt-get install php5-dev
Agora podemos rodar o comando deste pacote, execute:
sudo phpize
Veremos a seguinte imagem se tudo deu certo até agora:

Agora, vamos lá e execute:
sudo ./configure --with-pdo-oci=shared,instantclient,/usr,11.2
Provavelmente você se deparará com a seguinte mensagem:

Não se assuste vamos resolver… Vamos atualizar a indexação de nossos arquivos para localizar este arquivo que falta.
sudo updatedb
E agora ache ele:
locate php_pdo_driver.h
Após achar execute:
sudo sed -ie 's,include/php/ext/pdo/php_pdo_driver.h,include/php5/ext/pdo/php_pdo_driver.h,g' configure
Agora podemos executar:
sudo ./configure --with-pdo-oci=shared,instantclient,/usr,11.2
Editaremos agora o arquivo pdo_oci.c que se encontra dentro desta mesma pasta que estamos trabalhando.
sudo gedit pdo_oci.c
Por algum bug qualquer, precisamos que adicione zend_
na function_entry
conforme imagem abaixo, e logo após salve o arquivo:

Após isso precisamos criar mais 1 link simbólico, vamos lá :
sudo ln -s /usr/include/php5/ include/php
Agora depois de tudo feito, precisamos executar o seguinte:
sudo make && sudo make install
Tudo feito, e instalado, mas ainda não está habilitado. Agora dentro da pasta /etc/php5/cli/conf.d
crie um arquivo…
sudo touch pdo_oci.ini
Edite-o e insira as seguintes informações:
; Enable pdo_oci (oracle) extension module
extension=pdo_oci.so
Agora para verificar crie um arquivo para visualizarmos o phpinfo
:
touch index.php
Depois edite este arquivo e insira:
<?php
phpinfo();
Para todas as nossas alterações terem efeito, restarte o servidor:
sudo /etc/init.d/apache2 restart
Agora vamos rodar o servidor para acessarmos nosso phpinfo…
php -S localhost:8000
Abra seu navegador no endereço http://localhost:8000
. Vá até PDO na página , se você executou tudo corretamente verá o seguinte:

Repare que agora em PDO
além de MySql
, temos OCI
listado !
Espero que tudo tenha dado, certo para você !
Um abraço, e faça bom proveito deste tutorial !