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

20 respuestas a “Apache, PHP y Oracle XE en Ubuntu

  1. Heya i am for the primary time here. I found this board and I
    find It truly helpful & it helped me out a lot. I am hoping to provide something back and help others such as you helped me.

  2. 女性の Fluffie 到着 チョコレート、黒と銅。 利用可能 子供 色相 が 栗、黒砂、チョコレートブラウン、金属銅。
    であり続ける 離れて、滝から彼ら 動作 は非スリップのゴム底。 として、問題 の 現実、何 間違いなく 事項 は、我々
    着用 それらを 利便性。

  3. My coder is trying to convince me to move to .net from PHP.
    I have always disliked the idea because of the costs.
    But he’s tryiong none the less. I’ve been using WordPress on various websites for
    about a year and am concerned about switching to another platform.
    I have heard very good things about blogengine.net. Is there a way I can transfer
    all my wordpress content into it? Any kind of help would be really appreciated!

  4. He logrado hacer la instalacion y al parecer segun lo que veo en la consola esta bien ya que me sale esto:

    oci8

    OCI8 Support => enabled
    Version => 1.4.1
    Revision => $Revision: 293235 $
    Active Persistent Connections => 0
    Active Connections => 0
    Oracle Instant Client Version => 11.2
    Temporary Lob support => enabled
    Collections support => enabled

    Directive => Local Value => Master Value
    oci8.connection_class => no value => no value
    oci8.default_prefetch => 100 => 100
    oci8.events => Off => Off
    oci8.max_persistent => -1 => -1
    oci8.old_oci_close_semantics => Off => Off
    oci8.persistent_timeout => -1 => -1
    oci8.ping_interval => 60 => 60
    oci8.privileged_connect => Off => Off
    oci8.statement_cache_size => 20 => 20

    Es mas probe el archivo de prueba:
    prueba.php
    [root@centos html]# cat prueba.php
    <?php
    $c = oci_connect('hr', 'hola', 'localhost/XE');
    $s = oci_parse($c, 'select city from locations');
    oci_execute($s);
    while ($res = oci_fetch_array($s, OCI_ASSOC)) {
    echo $res['CITY'] . "»;
    }
    ?>

    y si lo corro en consola tengo lo siguiente:
    [root@centos html]# php prueba.php
    PHP Warning: Module ‘oci8’ already loaded in Unknown on line 0
    BeijingBernBombayGenevaHiroshimaLondonMexico CityMunichOxfordRomaSao PauloSeattleSingaporeSouth BrunswickSouth San FranciscoSouthlakeStretfordSydneyTokyoTorontoUtrechtVeniceWhitehorse

    Sin embargo no pudo verlo por web y correr prueba.php por web obtengo:

    Fatal error: Call to undefined function oci_connect() in /var/www/html/prueba.php on line 2

    La verdad ya me parece muy extraño esto… no se que hacer, por lo que solicito su ayuda.

    Saludos,

    Yoel Ocmin

  5. 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

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

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

  8. 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!

  9. 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

  10. 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

  11. 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 (0x80000000)
    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.

  12. 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

  13. 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.

  14. 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

  15. 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

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

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

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

Deja un comentario