lunes, 7 de marzo de 2011

Conectar ORACLE con PHP usando la librería OCI8

*Requisitos previos:
Apache2 y PHP
Oracle (yo use el XE)

Bien en vdd que esto se me complico bastante, pero enseguida describiré el proceso más sencillo, para lograr este objetivo:

1.-Descargar las librerías necesarias:

apt-get install php5-dev
apt-get install php-pear
apt-get install build-essential

2.-Descargar OCI8

En otros blogs despuès de estos pasos te indican que descargues la última versión de SDK e Instant Client de Oracle, para posteriormente compilarlos con OCI8(que permite la conexiòn de oracle y php, pero esto es algo confuso, es màs fácil usar la librería pecl para hacerlo:

pecl install oci8

En seguida introduciomos nuestro $ORACLE_HOME , y se vera en la pantalla toda la instalación de OCI8

3.-Agregar oci8.so a php.ini

Ya sea usando echo

echo "extension=oci8.so" >> /etc/php5/cli/php.ini
echo "extension=oci8.so" >> /etc/php5/apache2/php.ini

o también con:

vi /etc/php5/cli/php.ini y agregar la linea extension=oci8.so
vi /etc/php5/apache2/php.ini y agregar la linea extension=oci8.so

4.-Reiniciar Apache

sudo /etc/init.d/apache2 restart

5.-Hacer prueba


--
PutEnv("ORACLE_SID=XE");
PutEnv("ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server");
PutEnv("LD_LIBRARY_PATH=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib");

$ora_conn = oci_connect('scott','lennon','database_name');

$query = "SELECT deptno FROM emp";

$stid = OCIParse($ora_conn, $query);

if (oci_execute($stid))
{

while($res=oci_fetch_array($stid,OCI_NUM + OCI_RETURN_NULLS))
{
echo $res[0]."\n";
}



}
else {
$e = oci_error();

echo "error".$e["message"] ;

}

?>

y listo! en el navegador debería verse el resultado.

ALGUNAS CONSIDERACIONES:

Puedes verificar si funciona tu ejemplo.php en terminal usando :

php ejemplo.php

si funciona y no lo hace en el navegador, se debe a que debes de "setear" las variables $ORACLE_HOME , $LD_LIBRARY_PATH y $ORACLE_SID correctamente al inicio de tu archivo.

Si no quieres hacerlo en cada archivo que hagas, puedes exportar las variables en la configuración del Apache

vi /etc/init.d/apache2

y agregar las líneas
export ORACLE_SID=XE
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export LD_LIBRARY_PATH=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib

3 comentarios:

  1. muchas gracias por esta explicacion, me costo un egg, haciendo mil cosas, pero al fin pude. solo aclarar que $ORACLE_HOME es esta direccion(si se tiene instalado oracle-xe-universal):
    /usr/lib/oracle/xe/app/oracle/product/10.2.0/server

    ResponderEliminar
  2. Amigooooooo,,

    Estoy como DAveG.

    TOTALMENTE AGRADECIDO PORQUE LLEVABA MUCHAS HORAS BUSCANDO UNA SOLUCIÓN!!!!

    ResponderEliminar
  3. Gracias por tu ayuda amigo..!!! aunque uso xampp deplano tendre que cambiar lo del path en cada archivo....Igual Gracias de nuevo.

    ResponderEliminar