Apache, PHP y Oracle XE en Ubuntu
En este post explicaré la forma de conectar Oracle XE con PHP. Para referencia de como instalar Oracle XE en Ubuntu, está el siguiente post:
Lo primero que hay que hacer, es instalar el cliente de Oracle XE:
# sudo apt-get update
# sudo apt-get install oracle-xe-client
Es necesario compilar la extensión OCI8 de Oracle para PHP, por tanto hay que instalar los paquetes necesarios para dicha compilación:
# sudo apt-get install php-pear php5-dev build-essential
Y ahora compilamos:
# sudo pecl install oci8
El proceso de compilación nos va a pedir la ruta de la librería del cliente de Oracle. Ya que tenemos instalado el cliente en nuestra computadora, la ruta viene siendo la siguiente:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
Una vez hecha la compilación, lo siguiente es configurar Apache/PHP.
# sudo gedit /etc/php5/apache2/php.ini
Agregamos al archivo la línea:
extension=oci8.so
Guardamos el archivo php.ini y cerramos gedit.
Por último, reiniciamos Apache:
# sudo /etc/init.d/apache2 restart
Nos resta hacer una prueba de conexión, esto lo mostraré en el siguiente post, pues quiero hacer mención de la librería ADOdb para PHP.
Con información de:
15 comentarios hasta ahora
Replica

Estoy tratando de seguir los pasos para tener php con oracle cuando compilo oci8 con pecl, en el archivo oci8.c me larga muchos errores de sintaxis del codigo.Algun comentario ?
Por qué no pones el listado de errores, para ver específicamente dónde te está dando problemas y ver si te puedo ayudar.
Hola..
He consegido con exito que al compilar yo mismo el apache y el php (tengo el server 10g en la misma compu) la extencion oci8 me funcione… pero lo que quiero ahora es poder compilar solo la extencion oci8 de manera que el resto de la instalacion la maneje el apt… esto para que las actualizaciones se manejen automaticamente. El punto es que no consigo que me funcione… conoces alguna forma de que esto sea posible…. ???
Hola, muchas gracias por tu guia. Al ejecutar
sudo pecl install oci8 e indicarle la ruta de ORACLE_HOME obtengo este mensaje al finalizar
checking Oracle version… configure: error: Oracle-OCI8 needed libraries not found
ERROR: `/tmp/pear/cache/oci8-1.2.4/configure –with-oci8′ failed
Hola, hasta aqui todo muy bien y muchas gracias amigo por tu post.
Pero estoy esperando el siguiente post “Nos resta hacer una prueba de conexión, esto lo mostraré en el siguiente post, pues quiero hacer mención de la librería ADOdb para PHP.”
Muchas gracias
Qué tal Carlos, he dejado abandonado el proyecto y precisamente este fin de semana estoy por continuarlo. Dame oportunidad de reconfigurar mi equipo y yo creo que para el lunes pongo un ejemplo de como hacer un query hacía Oracle desde PHP.
tengo el mismo problema que Carlos Andres
checking Oracle version… configure: error: Oracle-OCI8 needed libraries not found
ERROR: `/tmp/pear/cache/oci8-1.2.4/configure –with-oci8′ failed
la plataforma esta a 32 bits y según he leido hay esta el problema pero no lo soluciono
abierto a sugerencias
hola, prueba lo siguiente:
cuando hagas:
>sudo make install
te dirá lago parecido a :
Installing shared extensions: /usr/lib/php5/20060613+lfs/
entonces haces:
>cd /usr/lib/php5/20060613+lfs
>ldd oci8.so
y te dirá algo como:
linux-gate.so.1 => (0xffffe000)
libclntsh.so.11.1 => /opt/oracle/instantclient/libclntsh.so.11.1 (0xb6548000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb63f5000)
libnnz11.so => /opt/oracle/instantclient/libnnz11.so (0xb624a000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6246000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb621f000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb6208000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb61f1000)
/lib/ld-linux.so.2 (0×80000000)
libaio.so.1 => not found
Son librerias dinamicas, si en alguna te pone “not found” … entoces deberias instalartelas con apt-get, haces un restart del apache y pruebas a ver si te funciona el oci.
Un saludo y suerte.
hola a todos,
en mi caso consigo terminar el proceso de compilacion-instalacion pero al intentar realizar la conexion a la base de datos con ocilogon(“user”,”pass”); me devuelve el siguiente error
Warning: ocilogon() [function.ocilogon]: ORA-12162: TNS:net service name is incorrectly specified in /var/www/bd2/practica7/pr71.php on line 12
ya he probado mil cosas pero nada… si no es mucha molestia ¿podrian echarme un cable?
un saludo y gracias
Hola, porfavor necesito ayuda.
Tengo ubuntu hardy heron, con lampp y cuando intento instalar el oci8 me sale lo siguiente :
Starting to download oci8-1.3.3.tgz (127,320 bytes)
………………………..done: 127,320 bytes
10 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
1. 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
1-1, ‘all’, ‘abort’, or Enter to continue: shared,instantclient,/opt/oracle/instantclient_10_2
1. 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
1-1, ‘all’, ‘abort’, or Enter to continue:
Si le doy enter me sale esto otro:
checking for unistd.h… yes
checking for long int… yes
checking size of long int… 4
checking if we’re on a 64-bit platform… no
checking OCI8 libraries dir… lib
checking Oracle version… configure: error: Oracle client libraries not found
ERROR: `/tmp/pear/cache/oci8-1.3.3/configure –with-oci8′ failed
Te agradeceré mucho la ayuda
Este es por lejos la mejor guia para instalar Oracle, sin embargo me tropecé con algo que seguro le trajo problemas a más de uno:
Luego de
# sudo pecl install oci8
parece que no importara lo que pusieramos, siempre hay algo mal, yo creo que los que armaron el script no pusiern bien algunos mensajes. Esta fue la combinación que a mi me dio resultado, deben ingresar:
# sudo pecl install oci8
all[Enter]
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client[Enter]
[Enter]
Y listo, ahi se instala.
Espero le sirva a alguien!
hola:
gracias por el post, muy bueno.
a mi me pasaba lo mismo al llegar a # sudo pecl install oci8, poniendo la opcion 1-1, me pide la ruta del cliente y es donde se pone:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
das enter y debe volver a salir la misma ventana, pero ya te da la ruta que has agregado a lo que das enter y ya va.
Hola, bueno, no consigo arreglar lo de oci8, tengo el mismo problema que Javier, utilice la opcion que utilice (all, 1-1) siempre tengo el mismo problema: configure: error: Oracle client libraries not found
ERROR: `/tmp/pear/cache/oci8-1.3.3/configure –with-oci8′ failed
Como puedo saber qué librerías instalar?
Hola Anna,
Tiene que indicarle la ruta:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
De lo contrario no la detecta.
Anna,
Por qué no sigues la recomendación de Guille. Las pantallas que yo puse, fueron las que me aparecieron. A Guille le salieron otras pantallas en el camino, pero el procedimiento es básicamente el mismo.
La solución es poner la ruta que también indica Guille:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client