“Edit – No final deste post, adicionei um vídeo mostrando o passo a passo deste tutorial”
Se você está tendo ou já teve dor de cabeça para instalar os módulos OCI8 e PDO para Oracle como eu, aqui vai um pequeno passo a passo do que funcionou para mim, espero que lhe ajude também.
Os passos neste tutorial requer que o usúario tenha privilégios de usuário root.
Caso você já tenha o Apache e o PHP instalados, verifique apenas se falta em seu computador algum pacote do PHP que foram instalados no passo 2.
Passo 1 – Instale o Apache .
Abra o terminal e digite os seguintes comandos:
sudo apt-get update sudo apt-get install apache2
Com o Apache instalado, teste no browser/navegador se o serviço está rodando através da url https:/localhost
Passo 2 – Instale o PHP.
sudo apt-get install php7.0 php7.0-xml php-xml php-common php7.0-cli php7.0-common php7.0-fpm php7.0-json php7.0-opcache php7.0-readline libapache2-mod-php7.0 php-pear php7.0-dev
Passo 3- Baixe os seguintes pacotes do Oracle Client, faça o download dos pacotes *.rpm > https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
Passo 4 – Instale o alien, para converter pacotes .rpm (família redhat) para .deb (família debian).
$ sudo apt-get install alien
Passo 5 – Converta os arquivos .rpm e instale.
$ sudo alien -i oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm $ sudo alien -i oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm $ sudo alien -i oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
Passo 6 – Instale a biblioteca libaio1.
$ sudo apt-get install libaio1
Passo 7- Crie o arquivo oracle.conf na pasta /etc/ld.so.conf.d/ com o caminho da lib do oracle client, e após criar o arquivo recarregue as configurações de ldconfig, atenção para mudar o caminho se o seu sistema(PC/SO) não for 64bits(client64).
$ sudo nano /etc/ld.so.conf.d/oracle.conf
cole o caminho da lib no meu caso foi: /usr/lib/oracle/11.2/client64/lib salve o arquivo com as teclas CTRL+x
Recarregue as configurações:
$ sudo ldconfig
Passo 8 – Exporte a variável ORACLE_HOME
$ export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
Passo 9 – Baixe o código fonte da lib oci8, extraia o conteúdo do arquivo baixado, compile e instale o mesmo.
$ pecl download OCI8
------- downloading oci8-2.1.4.tgz ... Starting to download oci8-2.1.4.tgz (191,992 bytes) .........................................done: 191,992 bytes File /home/me/oci8-2.1.4.tgz downloaded oci8-2.1.4.tgz foi o arquivo baixado --------
$ tar zxvf oci8-2.1.4.tgz (extraindo o arquivo baixado) $ cd oci8-2.1.4/ $ phpize $ ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib #(atente para o caminho da lib do oracle) $ sudo make install
Após o termino da compilação e instalação ele irá informar que o arquivo foi gerado e o caminho do mesmo, no meu caso foi:
---------------------------------------------------------------------- Libraries have been installed in: /home/me/Downloads/oci8-2.1.4/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Installing shared extensions: /usr/lib/php/20151012/
Passo 10 – Habilite a lib gerada no PHP:
Crie o arquivo o oci8.ini na pasta de módulos disponíveis do php, no meu caso foi na pasta /etc/php/7.0/mods-available/ , e após isso crie um link simbólico para ativar a lib, no meu caso foi na pasta /etc/php/7.0/apache2/conf.d
$ sudo nano /etc/php/7.0/mods-available/oci8.ini
cole o nome da lib :
extension=oci8.so
salve o arquivo com as teclas CTRL+x
$ cd /etc/php/7.0/apache2/conf.d $ sudo ln -s /etc/php/7.0/mods-available/oci8.ini oci8.ini
Passo 11 – Verifique a versão do seu PHP:
$ php -v
————————
PHP 7.0.8-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.8-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
———————-
Baixe o código fonte do PHP diretamente do site github, baixe a versão correspondente a versão instalada no seu PC, no meu caso foi a versão 7.0.8 (https://github.com/php/php-src/tree/PHP-7.0.8), caso essa não seja a sua versão selecione a versão correspondente no menu de branchs e faça o download do zip, esse passo é para conseguimos a versão correta da lib PDO_OCI.
Passo 12 – Através da linha de comando extraia o arquivo baixado, compile e instale a lib.
$ unzip php-src-PHP-7.0.8.zip #(extraindo o arquivo baixado) $ cd php-src-PHP-7.0.8/ext/pdo_oci/
(em versões mais novas[7.0.25 por exemplo], esse bloco abaixo não é necessário, você pode ir direto para o comando -> phpize)
$ nano config.m4
edite o arquivo config.m4, para adicionar a versão do 11.2
do oracle, localize a variável SUPPORTED_LIB_VERS (mais ou menos na linha 5)
e adicione o número da versão 11.2 na lista de versões, também
procure por case $PDO_OCI_VERSION (mais ou menos na linha 134)
e adicione | 11.2 | na lista de versões, salve o arquivo com as
teclas CTRL+X.
$ phpize $ ./configure --with-pdo-oci=instantclient,/usr,11.2 #(atente para a versão da lib do oracle) $ sudo make install
Passo 13 – Habilite a lib pdo_oci gerada no PHP:
Crie o arquivo pdo_oci.ini na pasta de modúlos disponíveis do php e o link simbólico igualmente ao passo 10, mundando apenas o nome da lib:
$ sudo nano /etc/php/7.0/mods-available/pdo_oci.ini
cole o nome da lib :
extension=pdo_oci.so
salve o arquivo com as teclas CTRL+x
$ cd /etc/php/7.0/apache2/conf.d $ sudo ln -s /etc/php/7.0/mods-available/pdo_oci.ini pdo_oci.ini
Passo 14 – Reinicie o apache
$ sudo service apache2 restart
Passo 15 – Habilite a vizualização de informações do php, criando o arquivo info.php com a função phpinfo() na pasta html do apache; e acesse no browser/navegador a url https://localhost/info.php e procure pelas libs oci8 e pdo_oci para saber se as mesmas estão ativas
$ sudo nano /var/www/html/info.php
cole o seguinte conteudo:
<?php
phpinfo();
?>
salve o arquivo com as teclas CTRL+x
Ao acessar a página procure pelos seguintes trechos, se estiverem como as imagens abaixo, o seu PHP está funcionando corretamente com as libs oci8 e pdo_oci. Após a verificação apague o arquivo info.php criado.
![](https://rosemberg.net.br/wp-content/uploads/2017/05/oci8.png)
![](https://rosemberg.net.br/wp-content/uploads/2017/05/pdo_oci.png)
“Vídeo demostrando o passo a passo deste tutorial”
Amigo, estou com o ubuntu 16.04 e criando um ambiente de dev que precisa conectar ao oracle, segui o teu tutorial, até o oci foi tranquilo, porem o pdo_oci não esta rolando, tem alguma ideia do que poderia ser? Segui o tutorial e nao tive nenhum erro.
Opa William, desculpe a demora em responder, passei uns dias sem acessar o blog. Você habilitou a a função phpinfo(); para checar quais libs estavam ativas? Também pode checar se habilitou a lib do pdo_oci com o arquivo pdo_oci.ini..
Qual o procedimento para desinstalar?
Eu instalei o client 12.2, porém preciso instalar o 11g, qual o procedimento para desinstalar o 12.2 e instalar novamente o 11g?
Consegui realizar o downgrade:
1 – Desinstalei os pacotes:
sudo apt-get remove oracle-instantclient12.2-sqlplus
sudo apt-get remove oracle-instantclient12.2-devel
sudo apt-get remove oracle-instantclient12.2-basic
2 – Baixei os pacotes 11.2 do site da oracle e instalei novamente como ensina o tutorial acima
3 – Apontei a lib da correta no arquivo oracle.conf
No arquivo:
sudo vim /etc/ld.so.conf.d/oracle.conf
Mudei de:
/usr/lib/oracle/12.2/client64/lib
Para:
/usr/lib/oracle/11.2/client64/lib
4 – Recarreguei as configurações
sudo ldconfig
5 – Apontei a variável ORACLE_HOME para a versão correta
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
6 – Realizei a compilação do oci8 novamente com o caminho da versão 11.2
$ tar zxvf oci8-2.1.4.tgz (extraindo o arquivo baixado)
$ cd oci8-2.1.4/
$ phpize
$ ./configure –with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib #(atente para o caminho da lib do oracle)
$ sudo make install
7 – Reinicie o servidor
Muito bem Mauricio, fica como dica para quem precisar fazer o mesmo procedimento. Abcs