Cómo instalar oci8 en Ubuntu 18.04

Antonio J. Galisteo

En esta ocasión vamos a ver cómo instalar oci8 en Ubuntu 18.04. Oci8 es una librería de Oracle para acceder a bases de datos Oracle desde PHP. Puedes leer más información en la web oficial de PHP para oci8 .

En primer lugar, vamos a descargar el paquete básico y sdk del instantclient, al momento de escribir este artítulo son instantclient-basic-linux.x64-12.2.0.1.0.zip y instantclient-sdk-linux.x64-12.2.0.1.0.zip. Descargamos estos paquetes de la web oficial de la librería oci de Oracle.

Una vez descargados, los descomprimimos en un directorio llamado instantclient_12_2 por ejemplo. El directorio del SDK, hay que meterlo dentro del directorio del paquete básico. Una vez hecho esto, vamos a crear el siguiente directorio:

sudo mkdir /opt/oracle

Ahora, vamos a mover los paquetes que hemos descomprimido al directorio anteriormente creado:

sudo mv instantclient_12_2 /opt/oracle/instantclient

Después, cambiamos los permisos del directorio anterior:

sudo chown -R root:www-data /opt/oracle

A continuación, instalamos (si no lo tenemos ya) las dependencias de la librería oci8:

sudo apt install php7.2-dev php-pear build-essential libaio1

Ahora, creamos los siguientes enlaces simbólicos:

sudo ln -s /opt/oracle/instantclient/libclntsh.so.12.1 /opt/oracle/instantclient/libclntsh.so
sudo ln -s /opt/oracle/instantclient/libocci.so.12.1 /opt/oracle/instantclient/libocci.so

Una vez realizado esto, debemos agregar el directorio de instantclient a los archivos de configuración:

sudo echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient

Si no te deja realizar esto por permisos de usuario, asegurate de que tu usuario está dentro del grupo de root o bien inicia sesión con root con:

sudo su

Y prueba de nuevo a realizar el paso anterior. A continuación lanzamos:

sudo ldconfig

Cuando termine de ejecutarse el proceso anterior, haremos:

sudo pecl install oci8

Nos va a preguntar por el directorio donde está la librería instalada y tendremos que introducir:

instantclient,/opt/oracle/instantclient

Ahora, debemos activar la librería al archito php.ini de PHP con:

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

Y lo mismo al archivo php.ini de Apache:

sudo echo "extension = oci8.so" >> /etc/php/7.2/apache2/php.ini

Después de ésto, debemos configurar las variables de entorno como sigue:

sudo echo "LD_LIBRARY_PATH=\"/opt/oracle/instantclient\"" >> /etc/environment
sudo echo "ORACLE_HOME=\"/opt/oracle/instantclient\"" >> /etc/environment

Y lo mismo para Apache:

sudo echo "export LD_LIBRARY_PATH=\"/opt/oracle/instantclient\"" >> /etc/apache2/envvars
sudo echo "export ORACLE_HOME=\"/opt/oracle/instantclient\"" >> /etc/apache2/envvars

Por último vamos a reiniciar Apache para que cargue la nueva configuración:

service apache2 restart

Y listo, ya hemos terminado. Ya sabemos cómo instalar oci8 en Ubuntu 18.04.

Para probar el funcionamiento podemos crear un archivo llamado test.php con el siguiente contenido:

$conn = oci_connect('usuario_oracle', 'pass_oracle', 'IP_SERVER_ORACLE:PORT_ORACLE/schema');

Y ejecutarlo desde la consola con:

php test.php

En caso de que nos muestre un mensaje de este tipo:

PHP Warning:  PHP Startup: Unable to load dynamic library 'oci8.so' (tried: /usr/lib/php/20170718/oci8.so (libmql1.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/oci8.so.so (/usr/lib/php/20170718/oci8.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Fatal error:  Uncaught Error: Call to undefined function oci_connect() in /var/www/html/.....

Es porque no se ha ejecutado bien el comando ldconfig, lo volvemos a lanzar:

sudo ldconfig

También podrías ejecutar el script como sudo:

sudo php test.php

Pero es mejor volver a ejecutar ldconfig.

Puedes aprender más en nuestra sección de Servidores.

Espero que te haya sido de utilidad!

Publicado el 03-07-2018

Donar

Si te ha sido de ayuda y quieres hacer una donación te lo agradeceremos :)

Compartelo!


Deja un comentario

Comentanos

*

Ir arriba de la pagina