domingo, 20 de diciembre de 2020
Cómo instalar OCI8 en Ubuntu 20.04 y PHP 7.4
Cómo instalar OCI8 en Ubuntu 20.04 y PHP 7.4 Oracle client 19
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.htmlDescargar
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/19.9 sudo mkdir /usr/lib/oracle/19.9/client64
Paso 3
Ahora necesitamos extraer los archivos.
sudo cp instantclient-basic-linux.x64-19.9.0.0.0dbru.zip /usr/lib/oracle/19.9/client64 sudo cp instantclient-sdk-linux.x64-19.9.0.0.0dbru.zip /usr/lib/oracle/19.9/client64 sudo cp instantclient-sqlplus-linux.x64-19.9.0.0.0dbru.zip /usr/lib/oracle/19.9/client64 cd /usr/lib/oracle/19.9/client64 sudo unzip instantclient-basic-linux.x64-19.9.0.0.0dbru.zip sudo unzip instantclient-sdk-linux.x64-19.9.0.0.0dbru.zip sudo unzip instantclient-sqlplus-linux.x64-19.9.0.0.0dbru.zip sudo mv instantclient_19_9 lib
Paso 4
A continuación, necesitamos crear un enlace simbólico a los archivos de Instant Client.
cd /usr/lib/oracle/19.9/client64/lib/ sudo ln -s libclntsh.so.19.1 libclntsh.so (Puede que ya exista) sudo ln -s libocci.so.19.1 libocci.so (Puede que ya exista)
Paso 5
Agregue la carpeta a nuestro ldconfig.sudo su - echo /usr/lib/oracle/19.9/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 (php 8) sudo pecl install oci8-2.2.0 (php 7.)Ver documentacion de pecl
Cuando se le solicite la ubicación del Instant Client, ingrese lo siguiente:
instantclient,/usr/lib/oracle/19.9/client64/lib
Al finalizar deberia mostrar:
Build process completed successfully Installing '/usr/lib/php/20190902/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.4/fpm/php.ini echo "extension=oci8.so" >> /etc/php/7.4/cli/php.ini
Paso 4
Actualiza el servidor.
sudo shutdown -r now
sudo service php7.4-fpm restart
Hasta aqui funciona el cli pero no fpm
Configurar fpm
Paso 1
cd /etc/php/7.4/mods-available/ sudo touch oci.ini sudo vi oci.iniagregar a oci.ini
extension = oci8.so
Paso 2
Ahora cree un enlace simbólico como este:
cd /etc/php/7.4/fpm/conf.d sudo ln -s /etc/php/7.4/mods-available/oci.ini 20-oci.ini
Paso 3
Actualiza el servidor.
sudo shutdown -r now
sudo service php7.4-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 19.9.0.0.0 Oracle Compile-time Instant Client Version 19.9
Configurar Sqlplus (opcional)
Paso 1
Agregando rutas al .bashrc
cd $h vi .bashrc
Agregar
export ORACLE_HOME=/usr/lib/oracle/19.9/client64 export TNS_ADMIN=/usr/lib/oracle/19.9/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/19.9/client64 sudo mkdir /usr/lib/oracle/19.9/client64/network sudo mkdir /usr/lib/oracle/19.9/client64/network/admin cd /usr/lib/oracle/19.9/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
3 comentarios:
ACTUALIZACION A INSTANTCLIENTE 21.3 Y CON PDO_OCI
#!/bin/bash
# FUENTE GENERAL: https://gist.github.com/eSkiSo/781269c79b4dd740e90fcc059c1985ae
# step 1
# fuentes en https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
mkdir ~/Descargas
cd ~/Descargas
wget https://download.oracle.com/otn_software/linux/instantclient/213000/instantclient-basic-linux.x64-21.3.0.0.0.zip
wget https://download.oracle.com/otn_software/linux/instantclient/213000/instantclient-sdk-linux.x64-21.3.0.0.0.zip
wget https://download.oracle.com/otn_software/linux/instantclient/213000/instantclient-sqlplus-linux.x64-21.3.0.0.0.zip
# step 2
mkdir /usr/lib/oracle
mkdir /usr/lib/oracle/21.3
mkdir /usr/lib/oracle//client64
# Step 3
cd ~/Descargas
cp instantclient-basic-linux.x64-21.3.0.0.0.zip /usr/lib/oracle/21.3/client64
cp instantclient-sdk-linux.x64-21.3.0.0.0.zip /usr/lib/oracle/21.3/client64
cd /usr/lib/oracle/21.3/client64
apt install unzip
unzip instantclient-basic-linux.x64-21.3.0.0.0.zip
unzip instantclient-sdk-linux.x64-21.3.0.0.0.zip
mv instantclient_21_3 lib
# Step 4 -> no hace falta
# step 5
echo /usr/lib/oracle/21.3/client64/ > /etc/ld.so.conf.d/oracle.conf
# Step 6
# echo /usr/lib/oracle/21.3/client64/lib >> /etc/ld.so.conf.d/oracle.conf
# ldconfig
# Step 7
apt-get --force install php-dev php-pear build-essential libaio1 php-json
# Step 8
# pecl channel-update pecl.php.net => NO
pecl install oci8-2.2.0 # CONTESTAR A LA PREGUNTA PATH: instantclient,/usr/lib/oracle/21.3/client64/lib
# Step 6bis, by https://stackoverflow.com/questions/47833041/unable-to-load-dynamic-library-oci8-so-php-7-2
echo /usr/lib/oracle/21.3/client64/lib > /etc/ld.so.conf.d/oracle.conf
ldconfig
# https://diegofranca.dev/2020/05/05/configurando-o-oci8-e-pdo_oci-no-php7/
echo "export LD_LIBRARY_PATH=/usr/lib/oracle/21.3/client64/lib/" >> /etc/apache2/envvars
echo "export ORACLE_HOME=/usr/lib/oracle/21.3/client64/lib/" >> /etc/apache2/envvars
echo "LD_LIBRARY_PATH=/usr/lib/oracle/21.3/client64/lib/:$LD_LIBRARY_PATH" >> /etc/environment
# reiniciar
mkdir /tmp/php
cd /tmp/php
# descargar la version fuente de php que este instalada en el sistema
wget https://www.php.net/distributions/php-7.4.21.tar.gz
tar xzvf php-7.4.21.tar.gz
cd php-7.4.21/ext/pdo_oci/
phpize
./configure --with-pdo-oci=instantclient,/usr/lib/oracle/21.3/client64/lib/
make
make install
# Step 9
# ELEGIR VERSION DE PHP:
echo "extension=oci8.so" > /etc/php/7.4/cli/php.ini
echo "extension=pdo_oci.so" >> /etc/php/7.4/cli/php.ini # probablemente no haga falta
# echo "extension=oci8.so" >> /etc/php/7.3/cli/php.ini
# echo "extension=pdo_oci.so" >> /etc/php/7.3/cli/php.ini # probablemente no haga falta
# systemctl restart apache2.service
# Step 10
# ELEGIR VERSION DE PHP:
# echo extension=oci8.so > /etc/php/7.3/mods-available/oci8.ini
# echo extension=pdo_oci.so > /etc/php/7.3/mods-available/pdo_oci.ini
echo extension=oci8.so > /etc/php/7.4/mods-available/oci8.ini
echo extension=pdo_oci.so > /etc/php/7.4/mods-available/pdo_oci.ini
# Setp 11
# ELEGIR:a
# ln -s /etc/php/7.3/mods-available/oci8.ini /etc/php/7.3/apache2/conf.d/20-oci8.ini
# ln -s /etc/php/7.3/mods-available/pdo_oci.ini /etc/php/7.3/apache2/conf.d/20-pdo_oci.ini
ln -s /etc/php/7.4/mods-available/oci8.ini /etc/php/7.4/apache2/conf.d/20-oci8.ini
ln -s /etc/php/7.4/mods-available/pdo_oci.ini /etc/php/7.4/apache2/conf.d/20-pdo_oci.ini
systemctl restart apache2.service
# step 12
php -i | grep oci
Gracias,
Ahora uso Debian y las guias saldran en dicho sistema operativo.
Excelente, probé con las ultimas versiones de todo y quedó andando perfecto
Gracias
Publicar un comentario