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:

Instalar Oracle XE en Ubuntu

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

Directorio ORACLE_HOME

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:

http://doc.ubuntu-fr.org/oci8

15 comentarios hasta ahora

  1. teodoro on

    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 ?

  2. Artemio Estrella on

    Por qué no pones el listado de errores, para ver específicamente dónde te está dando problemas y ver si te puedo ayudar.

  3. Patricio on

    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…. ???

  4. Carlos Andres on

    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

  5. Carlos Andres on

    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

  6. Artemio Estrella on

    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.

  7. brujula on

    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

  8. ixla on

    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.

  9. luizk on

    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

  10. Javier Roque on

    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

  11. Guille on

    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!

  12. z on

    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.

  13. Anna on

    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?

  14. Artemus Stella on

    Hola Anna,

    Tiene que indicarle la ruta:

    /usr/lib/oracle/xe/app/oracle/product/10.2.0/client

    De lo contrario no la detecta.

  15. Artemus Stella on

    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


Replica