anúncios

quarta-feira, 4 de setembro de 2019

Integrando Oracle Client no PHP com Linux

Sabemos que os que desenvolvem em PHP no Linux, geralmente utilizam ambiente local de forma manual, instalar cada pacote separado: Apache, PHP e MySQL, mas precisa incluir a extensão Oracle no PHP, então, o objetivo deste howto é explicar a integração com SGBD Oracle

O presente howto explicará os procedimentos de integração com Oracle Client no PHP em seu ambiente de desenvolvimento local na distribuição Linux Debian e derivados.

Segue os procedimentos:

1. Atualizar o sistema e demais pacotes necessários

# apt update
# apt install apache2 php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-xml php7.3-fpm php7.3-dev


2. Download do pacote Oracle Client

Pacotes oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm, oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm , oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm

PS: Até a data de publicação deste howto a versão corrente do Oracle Cient é 19.3, então no geral basta substituir a versão que for a mais recente.

3. Instalar o pacote alien para converter o .rpm to .deb
$ sudo apt install alien

4. Converter os arquivos .rpm em .deb
$ sudo alien -i oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm

$ sudo alien -i oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

$ sudo alien -i oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm


5. Instalar o pacote libaio1
$ sudo apt install libaio1

6. Criar o arquivo oracle.conf no diretório /etc/ld.so.conf.d/ e dentro do arquivo adicionar
/usr/lib/oracle/19.3/client64/lib
$ sudo vim /etc/ld.so.conf.d/oracle.conf

7. Atualizar as bibliotecas compartilhadas do sistema
$ sudo ldconfig

8. Exportar a variável ORACLE_HOME

$ export ORACLE_HOME=/usr/lib/oracle/19.3/client64/

9. Download do código fonte do oci8 e extrair os arquivos e fazer a compilação.

$ sudo pecl download OCI8
$ tar zxvf oci8-2.1.4.tgz
$ cd oci8-2.1.4/
$ phpize
$ ./configure --with-oci8=instantclient,/usr/lib/oracle/19.3/client64/lib
$ sudo make install


10. Habilitar o oci8.ini no diretório de módulos do PHP /etc/php/7.2/mods-available/ e criar um link simbólico /etc/php/7.2/apache2/conf.d
$ sudo vim /etc/php/7.2/mods-available/oci8.ini

Adicionar no arquivo oci8.ini
extension=oci8.so
extension=pdo_oci.so
$ sudo ln -s /etc/php/7.2/mods-available/oci8.ini /etc/php/7.2/apache2/conf.d/oci8.ini

11. Faça o download em formato ZIP do código fonte conforme a versão do PHP que foi instalado diretamente no Github https://github.com/php/php-src/tree/PHP-7.3 . Esse passo é para conseguimos a versão correta da lib PDO_OCI.

12. Extrair e compilar a lib PDO_OCI

$ unzip php-src-PHP-7.3.zip
$ cd php-src-PHP-7.3 /ext/pdo_oci/
$ phpize
$ ./configure --with-pdo-oci=instantclient,/usr,19.3
$ sudo make install


13. Habilitar a lib pdo_oci gerada no PHP
$ sudo vim /etc/php/7.3/mods-available/pdo_oci.ini
Adicione o conteúdo abaixo
extension=pdo_oci.so
$ cd /etc/php/7.3/apache2/conf.d
$ sudo ln -s /etc/php/7.3/mods-available/pdo_oci.ini pdo_oci.ini


14. Reiniciar o Apache
$ sudo service apache2 restart

15. Testar com a função phpinfo() no info.php se a extensão Oracle foi habilitada
$ sudo vim /var/www/html/info.php
< ?php
phpinfo();


Confere os screenshots abaixo:





Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

13. Testar conexão com banco de dados Oracle no PHP
Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php
< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!

Nenhum comentário:

Postar um comentário