• Home
  • Sobre
    • back
    • Jhonatan Mark photo

      Jhonatan Mark

      Este é meu blog/site para disseminar o conhecimento e compartilhar experiências

    • Saiba Mais
    • Email
    • Twitter
    • Facebook
    • Google+
    • LinkedIn
    • Instagram
    • Github
    • StackOverflow
    • Steam
  • Postagens
    • back
    • Postagens
    • Tags
  • Projetos

PHP PDO_OCI LINUX

02 Apr 2016

Reading time ~3 minutes

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:

Oracle Instant Client Basic

E mais este :

Oracle Instant Client Developer

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 :

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 !



LinuxOraclePHP Like Tweet +1