anúncios

Mostrando postagens com marcador Oracle Client. Mostrar todas as postagens
Mostrando postagens com marcador Oracle Client. Mostrar todas as postagens

sábado, 12 de setembro de 2020

Habilitando o Instant Client Oracle no PHP com CentOS

Ambiente PHP com MariaDB e OCI8 habilitado no CentOS

# yum update
# yum install epel-release -y
# yum install php php-cli php-pdo php-curl php-gd php-xml php-mbstring systemtap-sdt-devel php-pear php-devel mariadb-server make curl

Configuração de segurança do MySQL/MariaDB

# mysql_secure_installation

Logar no usuário administrador do MariaDB

# mysql -u root

Criar o banco de dados, usuário e permissão do usuário no MariaDB

MariaDB [(none)]> CREATE DATABASE ;
MariaDB [(none)]> CREATE USER 'usuario'@'127.0.0.1' IDENTIFIED BY 'secret';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nomedb.* TO user@127.0.0.1;
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

Download do Instant Client Oracle.

Se a versão do Oracle for 10g ou 11g, faça o download da versão 11.2.x do Instant Client Oracle. Nesse post, foi instalado a versão 11.2.0.4.0-1.

Como essa versão não é atual, então precisará criar uma conta no site do Oracle para poder fazer o download pelo link mencionado.

Após de ter feito o download Instant Client Oracle (basic, devel, sqlplus), segue o procedimento para instalação.

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

# dnf install libnsl

Definição de variáveis de ambiente e adicionar no PATH

export LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib/"
export ORACLE="/usr/lib/oracle/11.2/client64/"
export PHP_DTRACE=yes
export PATH=$PATH:$LD_LIBRARY:$ORACLE:$PHP_DTRACE

Download OCI8

Acesse https://pecl.php.net/package/oci8 e faça o download do OCI8 e segue os procedimentos.

$ tar xzvf oci8-2.2.0.tgz
$ cd oci8-2.2.0/
$ phpize
$ ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib/
$ make
# make install

Installing shared extensions: /usr/lib64/php/modules/

Criar o arquivo oci8.ini no /etc/php.d

# vim /etc/php.d/oci8.ini

Adicionar a linha abaixo

extension=oci8.so
# systemctl reload httpd

Verificar se o OCI8 foi habilitado no PHP

# php -i | grep oci8
/etc/php.d/oci8.ini
oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20

Inicialização dos serviços Apache (httpd), MariaDB (fork do MySQL)

# systemctl stop httpd
# systemctl start httpd
# systemctl enable httpd
# systemctl start mariadb
# systemctl enable mariadb

Liberar a porta 80 no firewall para o acesso no INPUT e FORWARD

# firewall-cmd --add-port=80/tcp --permanent

Teste básico

Testar com a função phpinfo() no info.php se a extensão OCI8 foi habilitada corretamente.

# vim /var/www/html/info.php
    <?php 
       phpinfo();

Confere o screenshot abaixo

Caso não exibir o OCI8 habilitado no phpinfo() e tenha feito a configuração conforme os procedimentos descritos de forma correta, então reinicie no comando
# reboot

Feito!

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!