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 updateAgora vamos instalar o pacote libaio1
sudo apt-get install libaio1Para Evitar Alguns possiveis Problemas certifique-se de ter instalado php5-mysql:
sudo apt-get install php5-mysqlPrecisamos 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.debE para instalar o segundo pacote:
sudo dpkg -i oracle-instantclient11.2-devel_11.2.0.4.0-2_amd64.debPrecisaremos criar agora alguns links simbólicos, execute:
sudo ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/clientE mais este link simbólico:
sudo ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/clientAgora 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_ociRepare 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.patchEscolha 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.patchEstas 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.patchPara rodar o próximo comandos precisamos instalar mais 1 pacote:
sudo apt-get install php5-devAgora podemos rodar o comando deste pacote, execute:
sudo phpizeVeremos a seguinte imagem se tudo deu certo até agora:
Agora, vamos lá e execute:
sudo ./configure --with-pdo-oci=shared,instantclient,/usr,11.2Provavelmente 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 updatedbE agora ache ele:
locate php_pdo_driver.hApós achar execute:
sudo sed -ie 's,include/php/ext/pdo/php_pdo_driver.h,include/php5/ext/pdo/php_pdo_driver.h,g' configureAgora podemos executar:
sudo ./configure --with-pdo-oci=shared,instantclient,/usr,11.2Editaremos agora o arquivo pdo_oci.c que se encontra dentro desta mesma pasta que estamos trabalhando.
sudo gedit pdo_oci.cPor 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/phpAgora depois de tudo feito, precisamos executar o seguinte:
sudo make && sudo make installTudo 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.iniEdite-o e insira as seguintes informações:
; Enable pdo_oci (oracle) extension module
extension=pdo_oci.soAgora para verificar crie um arquivo para visualizarmos o phpinfo :
touch index.phpDepois edite este arquivo e insira:
<?php
phpinfo();Para todas as nossas alterações terem efeito, restarte o servidor:
sudo /etc/init.d/apache2 restartAgora vamos rodar o servidor para acessarmos nosso phpinfo…
php -S localhost:8000Abra 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 !