Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/01/2010, 13:48
jimmydrum
 
Fecha de Ingreso: enero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Conectarse a Oracle con ADODB

Chicos,

Para habilitar OCI8 en linux deben hacer lo siguiente:

Primero debemos descargar los paquetes RPM para el instantclient Version 11.1.0.7.0 o bien la versión 11.2

oracle-instantclient11.2-basic-11.1.0.7.0-1.i386.rpm
oracle-instantclient11.2-sqlplus-11.1.0.7.0-1.i386.rpm
oracle-instantclient11.2-devel-11.1.0.7.0-1.i386.rpm
oracle-instantclient11.2-odbc-11.1.0.7.0-1.i386.rpm

Con estos paquetes tendremos entre otras cosas, soporte para sqlplus mediante el cliente, el sdk, y acceso odbc

para instalar los paquetes simplemente con:

Código:
rpm -ivh nombre_del_paquete.rpm
Agregar el oracle instant client al linker dinamico

Código:
echo /usr/include/oracle/<VERSION>/client > /etc/ld.so.conf.d/oracle_client.conf
ldconfig -v
Posteriormente descargar PECL OCI8 desde http://pecl.php.net/package/oci8

Descomprimir PECL
Código:
tar -xzvf oci-<VERSION>.tgz
cd oci-<version>
phpize
configurar el PECL como un objeto compartido usando instant client y especificando donde estan las librerias cliente de oracle, construir e instalar

Código:
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/<VERSION>/client/lib
make
make install
Agregar la libreria de objeto compartida LSO para PHP

Código:
echo extension=oci8.so > /etc/php.d/oci8.ini
REINICIAR apache

Código:
/etc/init.d/httpd restart
o bien con
Código:
services httpd restart
(depende de la distro)

en algunos casos ocurre que si tienes habilitado SELINUX este bloquea la carga correcta de la libreria .so de oci, si te encuentras con cualquiera de los siguientes problemas esta sería la solución:

Nota: para determinar un problema en la carga de oci ejecutar lo siguiente

setenforce Permissive o bien deshabilitar SELINUX

en CENTOS o cualquier distribución Redhat o Fedora ejecutar un
Código:
tail – f /var/log/httpd/http_error
con esto podrás ver cualquier mensaje de error generado por apache a modo de debug.

si el mensaje de error al iniciar apache es este

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/oci8.so' - libclntsh.so.11.1: cannot enable executable stack as shared object requires: Permission denied in Unknown on line 0

Probar esto:
Código:
chcon -t textrel_shlib_t '/usr/lib/oracle/11.2/client/lib/libnnz11.so'
/etc/init.d/httpd restart
Si el error en error_log es este:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/oci8.so' - libaio.so.1: cannot open shared object file: No such file or directory in Unknown on line 0

Entonces instalar libaio.so usando yum, aptitude o apt-get

Dudas ?

Todo esto testeado en CENTOS, si lo necesitan para Ubuntu es muy similar pero algo mas facil... si lo necesitan me avisan.

Saludos y espero que les sirva