Como conectar Oracle XE con PHP5 utilizando OCI8 en Fedora12

En esta entrega les escribo como logre conectar con php/netbeans una base de datos con Oracle XE (express edition).

Lo primero que tenemos que hacer es bajarnos el Oracle XE de la siguiente pagina:

http://www.oracle.com/technetwork/database/express-edition/downloads/index.html

De ahi me baje el paquete:

Oracle Database 10g Express Edition for Linux x86

Otra cosa importante es tener tambien los paquetes del Instant-Client-basic y el Instant-Client-devel, por ser fedora no los baje con rpm, pero funcionaran bien siempre y cuando tengamos un fedora.  A continuacion escribo el link de los paquetes del instant-client:

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

*Recordemos que para descargar los paquetes hay que tener usuario de Oracle.

Los paquetes que me baje son los siguientes:

oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm
oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm

Ahora procedemos a instalar el oracle XE escribiendo en consola la siguiente linea:

yum –nogpgcheck localinstall oracle-xe-univ-10.2.0.1-1.0.i386.rpm

con esto nos aseguramos de una instalacion limpia y congruente dentro de nuestro localhost. (Recordemos que esta instalacion la vamos a realizar con el fin de realizar pruebas localmente)

Despues de esta instalacion, tenemos que correr el siguiente comando:

./usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin/oracle_env.sh

Nuestra instalacion nos va a pedir que lo escribamos, utilizando la carpeta donde lo instalamos, si no hicimos ningun cambio, sera la que aparece arriba.  Si somos curiosos, nos daremos cuenta al abrir ese archivo, que lo que hace es correr las variables de entorno correctas para nuestra instalacion de Oracle XE.  Ya realizado este merengue, vamos a realizar la instalacion del instant-client.

Para el instant-client solo le di doble-click al instalador basic luego al devel y listo, esta parte de la instalacion esta realizada.  A continuacion procedemos a configurar las variables de entorno que son necesarias.

Para establecer las variables de entorno procedemos a editar nuestro archivo /etc/profile.  Yo lo hice de la siguiente manera:

mcedit /etc/profile

Y luego ingresamos los siguientes valores:

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/:/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin

El mc lo podemos descargar desde consola con:

yum install mc

Para ver si la carpeta es la misma que la que escribi yo como ORACLE_HOME es navegar por las carpetas y encontrar la ultima carpeta client.

Luego procedemos a instalar el OCI8.

El OCI8 es nuestra libreria que va a manejar las conexiones dentro de php hacia Oracle XE.  Esto lo realizamos con un repositorio distinto, con el siguiente comando de consola:

pecl install oci8-1.3.5.tgz

Ese comando nos tira el siguiente procedimiento:
downloading oci8-1.4.3.tgz ...
Starting to download oci8-1.4.3.tgz (153,515 bytes)
.................done: 153,515 bytes
10 source files, building
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if
you're compiling with Oracle Instant Client [autodetect] :

En este punto escribimos lo siguiente:

instantclient,/usr/lib/oracle/11.2/client/lib

Ojo con el instantclient,<path> asi es como lo vamos a ingresar.  De todas maneras si no encuentra algo el nos lo dira durante la instalacion y la dentendra por completo.

Ya que nos aparece lo siguiente:

Build process completed successfully
Installing '/usr/lib/php/modules/oci8.so'
install ok: channel://pecl.php.net/oci8-1.4.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini

Que es la parte final de la instalacion de OCI8, procedemos a hacer lo que nos recomienda y vamos a abrir nuestro archivo php.ini de la siguiente manera:

mcedit /etc/php.ini

Y añadimos la linea que veremos a continuacion. (Como recomendacion, hagamoslo despues de la linea numero 620)
extension=oci8.so

Para estas modificaciones es necesario que reseteemos apache, asi los cambios son evidentes:

/etc/init.d/httpd restartYa modificado esto, procedemos a probarlo con un programa sencillo de php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
phpinfo();
?>
</body>
</html>
Las lineas en html las agrega convenientemente netbeans.  Al correr este programa que le llame prueba.php en nuestro buscador, nos correra una pantalla con toda la informacion de los modulos que estan activados de php, pero el que de verdad nos interesa ver es el de oci8, damos un CTRL+F (si estamos en firefox) para buscar la palabra OCI8, nos deberia de aparecer como le siguiente screenshot.

Si nos aparece esto, ya logramos instalar el OCI8

Ahora solo vamos a probar nuestra conexion con el siguiente programa de php:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<title></title>
</head>
<body>

<?php

if ($c = oci_connect(‘usuario’, ‘password’,’localhost/xe’)) {
echo “Successfully connected to Oracle.”;
oci_close($c);
} else {
$err = oci_error();
echo “Oracle Connect Error ” . $err[‘text’];
}

?>

</body>
</html>

Vamos a ver los comandos utilizados, para no confundirnos:

$c = oci_connect(‘usuario’, ‘password’,’localhost/xe’)

Esta linea es la que genera la conexion con la funcion de oci_connect(‘<user>’,'<password>’,'<host>’) ya con esta informacion generamos la conexion, tomando en cuenta que el usuario y contraseña deberan de ser validas para nuestra instalacion de Oracle express y el host es el siguiente: localhost/XE

Para verificar estos valores podemos entrar a nuestro “enterprise manager” del XE (no recuerdo como se llama en express) que se accesa atraves de la siguiente pagina:

http://localhost:8080/apex

Con el login de SYS vamos a poder ingresar y crear nuevos usuarios.  Al correr el programa anterior vamos a comprobar si la conexion se realiza y si pasa asi, veremos la pagina mas bella del dia:

Sip, hemos conectado con Oracle...

Fuentes y agradecimientos:

http://www.oracle.com/technology/pub/notes/technote_php_instant.html
http://tecnoquia.blogspot.com/2009/12/configurar-php-para-conectar-oracle.html
http://codigoyotrascosas.blogspot.com/
http://nohemirojas.wordpress.com/2010/03/09/instalacion-de-oracle/#more-70

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s