martes, 10 de marzo de 2020

Cómo instalar OCI8 en Ubuntu 18.04 y PHP 7.2

No hay comentarios.:

Fuente: https://gist.github.com/Yukibashiri/cebaeaccbe531665a5704b1b34a3498e



Instale Oracle Instant Client y SDK


Paso 1

Descargue Oracle Instant Client y SDK del sitio web de Oracle. (Necesita iniciar sesión en la página de Oracle)

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

Descargar

  • Instant Client Package - Basic
  • Instant Client Package - SDK
  • Instant Client Package - Sql Plus (Opcional)
  • Paso 2

    Cree una nueva carpeta para almacenar archivos zip de Oracle Instant Client en su servidor.

        sudo mkdir /usr/lib/oracle
        sudo mkdir /usr/lib/oracle/12.2
        sudo mkdir /usr/lib/oracle/12.2/client64
    

    Paso 3

    Ahora necesitamos extraer los archivos.

        sudo cp instantclient-basic-linux.x64-12.2.0.1.0.zip /usr/lib/oracle/12.2/client64
        sudo cp instantclient-sdk-linux.x64-12.2.0.1.0.zip /usr/lib/oracle/12.2/client64
        sudo cp instantclient-sqlplus-linux.x64-12.2.0.1.0.zip /usr/lib/oracle/12.2/client64
    
        cd /usr/lib/oracle/12.2/client64
    
        sudo unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
        sudo unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip
        sudo unzip instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
    
        sudo mv instantclient_12_2 lib
        
    

    Paso 4

    A continuación, necesitamos crear un enlace simbólico a los archivos de Instant Client.

        cd /usr/lib/oracle/12.2/client64/lib/
        sudo ln -s libclntsh.so.12.1 libclntsh.so
        sudo ln -s libocci.so.12.1 libocci.so
    

    Otra opcion para este mismo paso

        ln -s /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1 /usr/lib/oracle/12.2/client64/lib/libclntsh.so
        ln -s /usr/lib/oracle/12.2/client64/lib/libocci.so.12.1 /usr/lib/oracle/12.2/client64/lib/libocci.so
    

    Paso 5

    Agregue la carpeta a nuestro ldconfig.
        sudo su -
        echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle.conf
    

    Paso 6

    Actualice los enlaces de tiempo de ejecución de Dynamic Linker

        ldconfig
    

    Hecho. Ahora podemos pasar a la siguiente parte.


    Instalar paquetes adicionales


    Para instalar la extensión OCI8, necesitamos instalar algún paquete adicional en nuestro servidor.

    Paso 1

    Ejecute estos comandos:

        sudo apt-get install php-dev php-pear build-essential libaio1
    

    Paso 2

    Una vez instalado, necesitamos obtener el archivo OCI8. Pero, antes de eso, necesitamos actualizar el canal PECL.

        sudo pecl channel-update pecl.php.net
    

    Luego instalaremos oci8

        sudo pecl install oci8
    

    Cuando se le solicite la ubicación del Instant Client, ingrese lo siguiente:

        instantclient,/usr/lib/oracle/12.2/client64/lib
    

    Al finalizar deberia mostrar:

        Build process completed successfully
        Installing '/usr/lib/php/20170718/oci8.so'
        install ok: channel://pecl.php.net/oci8-2.2.0
        configuration option "php_ini" is not set to php.ini location
        You should add "extension=oci8.so" to php.ini
    

    Paso 3

    Necesitamos decirle a PHP que cargue la extensión OCI8.

        sudo su -
        sudo echo "extension=oci8.so" >> /etc/php/7.2/fpm/php.ini
        echo "extension=oci8.so" >> /etc/php/7.2/cli/php.ini
    

    Paso 4

    Actualiza el servidor.

        sudo shutdown -r now
    
        sudo service php7.2-fpm restart
    

    Hasta aqui funciona el cli pero no fpm


    Configurar fpm


    Paso 1

    cd /etc/php/7.2/mods-available/
    sudo touch oci.ini
    sudo vi oci.ini
    
    agregaar a oci.ini
        extension = oci8.so
    

    Paso 2

    Ahora cree un enlace simbólico como este:

        cd /etc/php/7.2/fpm/conf.d
        sudo ln -s /etc/php/7.2/mods-available/oci.ini 20-oci.ini
    

    Paso 3

    Actualiza el servidor.

        sudo shutdown -r now
    
        sudo service php7.2-fpm restart
    

    Paso 4

    Ahora crea un archivo php info

        
        cd /var/www/html/
        sudo touch info.php
        sudo vi info.php
    

    agregar a info.php

        <?php
            phpinfo();
    

    Deberia mostrar la seccion oci

        oci8
        OCI8 Support enabled
        OCI8 DTrace Support disabled
        OCI8 Version 2.2.0
        Oracle Run-time Client Library Version 12.2.0.1.0
        Oracle Compile-time Instant Client Version 12.2
    

    Configurar Sqlplus (opcional)


    Paso 1

    Agregando rutas al .bashrc

        cd $h
        vi .bashrc
    

    Agregar

    export ORACLE_HOME=/usr/lib/oracle/12.1/client64
    export TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin
    export PATH=$PATH:$ORACLE_HOME/lib
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export EDITOR=vi
    

    Paso 2

    Crear el archivo tnsnames.ora

        cd /usr/lib/oracle/12.2/client64
        sudo mkdir /usr/lib/oracle/12.2/client64/network
        sudo mkdir /usr/lib/oracle/12.2/client64/network/admin
        cd /usr/lib/oracle/12.2/client64/network/admin
        sudo touch tnsnames.ora
        sudo vi tnsnames.ora
    

    Agregar

    orcl =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
         )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )
    

    Por ultimo vamos a probar

        sqlplus system/system@orcl
    
    Ver