Instalar OCI8 en CentOS

Esta instalación está hecha sobre un Centos CentOS Linux release 7.2.1511 de 64 bits
Version de PHP 5.6.30
Version de Apache 2.4.6
Base de datos Oracle 11g - Cualquier release.


Instalar las siguientes librerías:
# yum install php-pear php-devel zlib zlib-devel bc libaio glibc
# yum groupinstall "Development Tools"


Descargar del siguiente enlace el Oracle instantclient:




Para Oracle 11g y php5.6:


oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm


Ejecutar:


# rpm -ivh oracle-instantclient*


Una vez instalado el Oracle instantclient, crear los enlaces simbólicos:


#  ln -s /usr/include/oracle/11.2/client64  /usr/include/oracle/11.2/client
#  ln -s /usr/lib/oracle/11.2/client64  /usr/lib/oracle/11.2/client


Ahora configuraremos la variable LD_LIBRARY_PATH para indicar donde están instaladas las librerías de Instant client:


# echo "export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib" > /etc/profile.d/oracle.sh
# source /etc/profile.d/oracle.sh

Instalar PDO_OCI


Descargar de:



Desempaquetar el tgz en /tmp


# tar -xzvf PDO_OCI-1.0.tgz
# cd PDO_OCI-1.0


Vamos a configurar el PHP para usar PDO_OCI:


# phpize
# ./configure --with-pdo-oci=instantclient,/usr,11.2


Para evitar el siguiente error con la distribución 11.2 (o superior) de Oracle Instant client debemos editar el archivo config.m4:


configure: error: Unsupported Oracle version! 11.2


Editamos el archivo config.m4 aplicando los siguientes cambios:


# vi config.m4


Agregar las siguientes líneas:


Lineas 10 y 11:


elif test -f $PDO_ODI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
  PDO_OCI_VERSION=11.2


En las líneas 103, 104 y 105


11.2)
   PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
   ;;


Una vez realizado esto debemos editar el archivo pdo_oci.c, con esto evitamos al hacer el make los  errores (entre otros):


make: *** [pdo_oci.lo] Error 1

Editamos el archivo pdo_oci.c


# vi pdo_oci.c
Aplicamos los siguientes cambios:


Reemplazamos en la línea 34:


function_entry por zend_function_entry


Solvento esto podemos terminar la configuración:


# make
# make install


Luego incluimos el módulo en PHP y reiniciamos el apache:


# echo "extension=pdo_oci.so" > /etc/php.d/pdo_oci.ini
# service httpd restart


Para validar el módulo PDO_OCI fue instalado y configurado en php ejecutamos:


php -i | grep oci


Deberia retornar algo similar a:


PDO drivers => mysql, oci, sqlite

Instalar OCI8


Descargar de:




Desempaquetar en /tmp


# tar -xvf oci8-1.4.9.tgz


Configurar para compilar:


# cd oci8-1.4.9
# phpize
# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
Compilar e instalar


# make
# make install


Incluir OCI8 en PHP y reiniciar el apache:


# echo "extension=oci8.so" >> /etc/php.d/oci8.ini
# service httpd restart


Verificar la instalación:


# php -i | grep oci8


El resultado debe ser algo similar a:


/etc/php.d/oci8.ini,
/etc/php.d/pdo_oci.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
PDO drivers => mysql, oci, sqlite


De esta manera PHP está habilitado de acceder a bases de datos Oracle.

A mi me funciono tambien para 12 cambiando los valores de modificación del archivo de PDO_OCI config.m4 de 11.2 a 12.1 o el release requerido.

Comentarios

  1. con que comando descargo y donde se guarda para descomprimir por me sale no encontrado

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

ORA-30036: Unable to extend segments in undo tablespace 'UNDO' en Oracle Database 10g Express Edition