Instalar módulo PHP para la conexión con un Oracle remoto
06 de Noviembre de 2007 en Sistemas, Linux, PHP
Lecturas: 15,350

OracleLa instalación por defecto de PHP no lleva soporte para Oracle si en el momento de su instalación no había ni un cliente ni un servidor Oracle en el sistema. La puesta en marcha de un módulo PHP para proporcionar conexión a un Oracle en un servidor remoto consta de dos pasos: Instalar el Oracle Instant Client y Generar e instalar el módulo OCI.

Al instalar el servidor web directamente en los primeros pasos de la instalación (ver artículo Instalar Debian 4 Etch en un Compaq Proliant DL 360) recibimos un Apache 2.0 con PHP 5.2.0, e instalaremos el Oracle InstantClient 11.1.0.1-1, generando un módulo PHP usando el código fuente de OCI8 versión 1.2.4 (todo último estable).

Instalar Oracle Instant Client

Instalar el Oracle Instant Client nos proporciona conexión a un servidor Oracle remoto en nuestra red, disponible para todos los programas del sistema. Oracle los distribuye en archivos comprimidos o RPMs, pero no DEBs (propios de Debian). Para poder trabajar directamente con los RPMs debemos instalar el Gestor de Paquetes de Red Hat, y aprovechamos para instalar la librería de acceso aio que nos servirá en la puesta en marcha:

$ apt-get install rpm libaio1

1.- Bajar paquetes de Oracle Instant Client de

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html

- oracle-instantclient-basic-11.1.0.1-1.i386.rpm
- oracle-instantclient-devel-11.1.0.1-1.i386.rpm
- oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm

Y los copiamos a /root/tmp/

2.- Instalar paquetes

$ rpm -ivh /root/tmp/oracle-instantclient-*

3.- Crear directorio para archivos de configuración

$ mkdir /etc/oracle

4.- Obtener el archivo tnsnames.ora del servidor remoto dónde nos vamos a conectar y copiarlo a /etc/oracle/

5.- Agregar variables de entorno

$ vim /root/.bashrc

Agregar las siguientes líneas

export TNS_ADMIN=/etc/oracle
export SQLPATH=/usr/lib/oracle/11.1.0.1/client/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib/;$LD_LIBRARY_PATH
export PATH=$PATH:$SQLPATH

6.- Reiniciar la sesión de root para que los cambios en las variables de entorno tengan efecto.

7.- Comprobar conectividad con servidor remoto

$ sqlplus usuario@servidor

Dónde usuario es el nombre de usuario o esquema y servidor es uno de los definidos en el tnsnames.ora
Pedirá la contraseña y si todo va bién nos devolverá el prompt del servidor Oracle.

Generar e Instalar módulo OCI en PHP

Para generar el módulo debemos instalar algunas herramientas de desarrollo

$ apt-get install build-essential php5-dev

1.- Si no está creado, creamos el directorio de fuentes

$ mkdir -p /usr/local/src

2.- Nos movemos a ése directorio

$ cd /usr/local/src

3.- Descargamos las fuentes PECL del futuro módulo OCI:

$ wget
http://pecl.php.net/get/oci8-1.2.4.tgz

4.- Descomprimimos

$ tar xzf oci8-1.2.4.tgz

5.- Entramos al directorio creado

$ cd /usr/local/src/oci8-1.2.4

6.- Preparamos el módulo para que sea generado para PHP

$ phpize

7.- Configuramos el módulo para la generación

$ ./configure –with-oci8=shared,instantclient,/usr/lib/oracle/11.1.0.1/client/lib/

La ruta es dónde se encuentran los *.so que hemos instalado con el InstantClient

8.- Construcción e instalación

$ make
$ make install

9.- Editamos la configuración de PHP.

$ vim /etc/php5/apache2/php.ini

Añadimos la línea:

extension=oci8.so

y repetimos lo mismo para el archivo /etc/php5/cli/php.ini

10.- Reiniciamos Apache

$ /etc/init.d/apache2 restart

11.- Comprobamos que ha sido instalado correctamente realizando un simple script PHP que contenga únicamente la función phpinfo() y verificamos que existe una nueva sección titulada OCI8.

Y éso es todo… Puedo decir que esta preparación me ha servido perfectamente para instalar un foro phpBB 3 RC7, recién salida del horno, que ya lleva de serie soporte para Oracle. Aunque realmente ha sido simple, es posible que cuelgue una guía de instalación.

Saludos!

Tags: , , , , , , ,
 Enviar a Fresqui

Leer los Comentarios

[ # 8266 ] Comment desde Alex Galletero [07 de Noviembre de 2007, 06:09]

Bon manual, si senyor. Aquest me’l guardo, que segur que em fa falta més endavant.

Salutacions,
alex

[ # 8323 ] Comment desde Xavi [08 de Noviembre de 2007, 08:38]

Hombre, Alex! M’alegro que el trobis interessant ;)

Salut company!

[ # 14272 ] Comment desde ivan [07 de Enero de 2008, 04:39]

la instalacion en ubuntu es muy similar, a excepcion de que no se tiene la ruta: /etc/php5/cli/php.ini, habia buscado en muchos tutoriales, pero ninguno me habia funcionado como este, gracias

[ # 14273 ] Comment desde Xavi [07 de Enero de 2008, 04:42]

La explicación es sencilla: Ubuntu deriva de Debian. Por eso en mi PC personal uso Ubuntu ;)

Saludos, y gracias a ti por comentar ;)

[ # 15874 ] Comment desde patricio [22 de Enero de 2008, 07:28]

muchas hasta la parte de instant client perfecto pero yo tengo s.o centos 4 ocupo yum no apt-get y no puedo hacer esto $ apt-get install build-essential php5-dev y con $ yum install build-essential php5-dev no me baja nada como tendria q hacerlo tengo q instalar algun repositorio???? agradeceria tu ayuda gracias.

[ # 16060 ] Comment desde David [24 de Enero de 2008, 05:48]

Muchiiiiiiiiiiiiiisimas gracias, me ha ayudado mogollón!

[ # 16061 ] Comment desde Xavi [24 de Enero de 2008, 05:52]

De nada hombre, para éso estamos ;)

[ # 17499 ] Comment desde German Segura [13 de Febrero de 2008, 11:42]

He realizado esta instalacion en otros servidores pero en uno no lo hizo, el servidor es un itanium 64 bits con Red Hat AS 5, tengo el php 5.1.6 instalado. Hago todos los pasos pero viendo el info.php no me muestra la nueva sección, y probe con un aplicativo con adodb y me sale el siguiete error: Missing extension for oci8.

Ya comprobe que copio la extension al directorio de extensiones. Gracias.

[ # 17527 ] Comment desde Xavi [14 de Febrero de 2008, 09:34]

Por el error que te da parece como si no se hubiera registrado la extensión o no la encontrara…

Has añadido la extensión en el PHP.ini? Has reiniciado el apache? Has comprobado en qué ruta necesita que dejes el archivo .so? Es muy posible que en RedHat la ruta sea distinta que en Debian (mi ejemplo).

Salu10

[ # 21343 ] Comment desde ismael [08 de Mayo de 2008, 08:46]

al instalar el oci8 me sale este error :
checking for Oracle (OCI8) support… yes, shared
checking Oracle Instant Client directory… /usr/lib/oracle/11.1.0.1/client/lib/
checking Oracle Instant Client SDK header directory… /usr/include/oracle/11.1.0.1/client
checking Oracle Instant Client version… configure: error: Oracle Instant Client libraries not found

Alqguien sabe por dnd van los tiros de la solucion?

[ # 21344 ] Comment desde Xavi [08 de Mayo de 2008, 08:55]

Has instalado todos los paquetes? Parece que te faltan las librerías:

- oracle-instantclient-basic-11.1.0.1-1.i386.rpm
- oracle-instantclient-devel-11.1.0.1-1.i386.rpm
- oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm

Puede que te reconozca el directorio porque lo tengas en el PATH pero realmente no estén allí. Búscalas con un locate o un find…

Salu10

[ # 25249 ] Comment desde Fher [19 de Junio de 2008, 05:59]

Hola a todos, estoy haciendo una migracion de java a php, mi problema es el siguiente:
1. Instale todo lo que dice el manual ( y es perfecto felicitaciones).
2. Uso sqlplus usuario/passwd@servidor tal como decimos aqui y me funciona, ahora el problema es que cuando quiero conectarme usando mi php de la siguiente manera:
oci_connect(usuario,passwd,servidor);
no me conecta y me da un error:
ORA-12154: TNS:could not resolve the connect identifier specified
la verdad reinstale todo pero no me funciona alguien me podria dar una mano,
Estoy usando centos 5(servidor web) y windows 2003 server (servidor de la base de datos)

[ # 25334 ] Comment desde Xavi [20 de Junio de 2008, 08:56]

Por lo visto es un error bastante usual… Creo que lo que te falta son las variables de entorno que el servidor va a buscar para identificar el conector.

Si tienes un CentOS… has realizado el punto 5 de la parte del Oracle Instant Client, la de las variables de entorno? En algunas versiones a veces es necesario agregar, además, una variable de entorno llamada ORACLE_HOME que apunte al archivo tnsnames.ora.

Espero haberte podido ayudar ;)

Salu10.

Escribe un Comentario





Estadísticas