reiniciar apache

Conectar PHP con Oracle 11g

Encuentra en el sitio

Últimos Artículos

Últimamente he estado trabajando en un proyecto en el cual es necesario que sea escalable en cuanto a la conexión a base de datos y uso en terminales. Hablo de escalabilidad ya que la aplicación debe de conectarse con MySQL y Oracle conPHP, con la primer Database no hay problema ya que PHP trabaja bastante bien con MySQL, pero con Oracle se debe de realizar cierto proceso para poder trabajar con las funciones de PHP para Oracle. Lo que sigue es el resultado de mi experiencia sobre un servidor local, y con esto aprendi como Conectar PHP con Oracle 11g 😀

Lo primero que tenemos que hacer es comprobar si existe alguna extensión oci8, para buscamos esta cadena en el phpinfo():

extension oci8 Conectar PHP con Oracle 11g

Si encontramos alguna cadena después de la cadena oci8, como en la anterior imagen, solo bastara con modificar una linea y reiniciar el servidor local para que tome los cambios.

Para modificar el archivo iremos a la siguiente ubicación y lo editaremos el archivo con nuestra aplicación favorita para modificar archivos de texto plano:

phpini

Una vez abierto el archivo buscaremos la siguiente linea y eliminamos el ” ; “, descomentando la linea para que pueda ser habilitada la libreria:

extension=php_oci8_11g.dll

oci8 oracle 11g

Solo nos queda reiniciar el servicio del Servidor Apache, así que paramos e iniciamos el servidor para que tome los cambios. Ojo, esto es importante!
reiniciar apache

Pero bueno, que tal que la versión que tengamos no tenga este soporte nativo para Oracle? Googleando encontré una solución para este problema.

Ahora mirando si nos funciona, crearemos una carpeta en nuestro servidor local, a nuestro gusto, y en ella el archivo que hará la conexión con el Servidor Oracle:

La linea 3 es la encargada de la conexión, esta consta del nombre de usuario, la contraseña, y host de Oracle. Recordemos que el host se puede manejar tanto por IP como por el nombre de la maquina.

Bueno, para finalizar, si todo sale bien podremos ver el siguiente resultado cuando abramos el archivo por el navegador web:

conexion php con oracle

Si te ha gustado el post, compártelo, regala un like ó comenta 😉

Etiquetas: , ,
  1. Avatar for belial9826 Jose David Ordoñez Urbano dice:

    Buenas tardes

    tegno cliente oracle 9i y Acabo de solucionar el problema con la siguiente herramienta:
    wamp: http://www.wampserver.es/

    Se activa muy facil la OCI8 con solo un clic pero sino en el PHP.INI buscas extension=php_oci8.dll y le quitas el “;”

    Ojo no puedes usar extension=php_oci8.dll y extension=php_oci8_11g.dll al mismo tiempo

    Prueben con este string de conecion a base de datos remota:

    <?php
    $db_test = '(DESCRIPTION=( ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=XX.XXX.XXX.XXX) (PORT=1521)))( CONNECT_DATA= (SID=NOMBRE_BD) ))';
    $conn = oci_connect("USUSARIO", "CONTRASEÑA", $db_test);
    $query = oci_parse($conn,'SELECT CAMPO FROM TABLA order by 1 asc');
    oci_execute($query);
    while ($row = oci_fetch_array($query, OCI_ASSOC)) {
    foreach ($row as $item) {
    echo $item." “;
    }
    echo “\n”;
    }
    oci_free_statement($query);
    oci_close($conn);
    ?>

    Espero les sirva, creo que lei mas de 12 manuales y 56 paginas

  2. Avatar for belial9826 christ dice:

    Hola a todos he regresado porque gracias a mi Dios todo poderoso pude resolver el problema de la conexión con oracle 11 g edicion de empresarial, les comento …. el tutorial es excelente solo falta unos detalles les explico camaradas, yo uso xampp para conectarme en su version 1.8.1 esta version me permite tener en el servidor php disponibles las extenciones 11 g que nesecitamos, lo que descomentamos en el archivo php.ini …. CORRECTO! yo tambien descomente la linea que dice extension = php_pdo_oci.dll……OJO!……………………….luego descargue el instan cliente 11g de 32 bits porque si se dan cuenta la version del servidor php que nos instala xampp es de 32 bits….OJO! no de 64 y ese era el problema yo uso w7 de 64 bits y descargaba el instan cliente 11 g de 64 por eso no levantaba la conexión…….UNA COSA MAS despues que desgarguen el cliente descomprimanlo en el directorio C:/instantclient_11_2 esta dirección deben agregarla a las variables de entorno del sistema despues reinician su pc y listo correra todo bien! Agradecimintos a Dios por favor que solo somos útiles si servimos a los demás.

    1. Avatar for belial9826 Eduardo dice:

      Hola amigo trato de hacer lo que tu hicisite pero con oracle express edition 11g , en localhost pero tngo errores y quiero hacerlo con pdo porfavor hechame una mano mi correo es [email protected] como podria contactarme disculpa

  3. Avatar for belial9826 christ dice:

    no mi amigo no me conecta, he seguido a pie de la letra las instrucciones he revisado todo y solo es la pinche conexión desde el servidor php que no levanta, agradeciera ayuda gracias por la atención.

  4. Avatar for belial9826 Manuel Fernando Marulanda Aguirre dice:

    Muchas gracias por la información; hice el paso a paso, pero me saca el error: “Fatal error: Call to undefined function oci_connect() in C:xampphtdocsoracleoracle.php on line 3”

    No se si sean los datos de la base de datos, tengo la duda en la direccionServidor/SID

  5. Avatar for belial9826 Jose dice:

    Esta es mi linea 3 : $conn = oci_connect(“system”, “654321”, “localhost/xe”);

    pero me dice: Fatal error: Call to undefined function oci_connect() in C:\xampp\htdocs\conn\conexion.php on line 3

    Por favor , necesito resolver esto urgente :s

  6. Avatar for belial9826 david dice:

    Fatal error: Call to undefined function oci_connect() in C:\xampp\htdocs\prueba1.php on line 9
    no se mira

    conectaroracle();

    class basedatos{

    function conectaroracle(){
    $conn = oci_connect(“ufinal”,”123456″ ,”localhost”);

  7. Avatar for belial9826 carlos dice:

    Muchas Gracias por esa informacion me ha sido muy util!!!

  8. Avatar for belial9826 Eliel dice:

    Necesito ayuda. No puedo hacer la conexión a mi base de datos en oracle 11g con php 5.5.6.
    Todo esto lo tengo en un servidor local (mi lap) pero siempre me aparece el mismo error: Fatal error: Call to undefined function oci_connect() in C:xampphtdocsPruebasprueba.php on line 2.
    Ya tengo descomentada la liena en el php.ini y en la página del xammp del phpinfo me aprece igual que la captura de pantalla que esta al inicio de este post.
    Mi codigo: $connection=oci_connect(‘ELIEL’, ‘ELIEL’, ‘localhost/XE’);

    1. Avatar for belial9826 belial9826 dice:

      Hola amigo, disculpa la demora, pero las obligaciones que últimamente he tenido me han dejado sin tiempo 🙁 Primero, el orden de los datos en tu código estan bien, pero veo que no usas comillas dobles, sino sencillas. Usa las comillas dobles:

      $connection=oci_connect("ELIEL", "ELIEL", "localhost/XE");

      Cualquier cosa me avisas a [email protected] Saludos.

      1. Avatar for belial9826 julia dice:

        Compañero, a mi me aparece este error: Fatal error: Call to undefined function oci_connect() in C:xampphtdocsBullMarketprueba.php on line 3

        he hecho todo lo que dices, pero sigue sin funcionar.

  9. Avatar for belial9826 Ariel dice:

    Muy buena ayuda amigo 😀

  10. Avatar for belial9826 Pedro dice:

    En cuanto a las funciones de php .. cambian ? ya que las funciones suelen ser de este tipo, mysql_tal_cosa

    1. Avatar for belial9826 belial9826 dice:

      Hola pedro, te cuento que no. Para MySQL solo sirven las funciones mysql ó mysqli. Para oracle las funciones comienzan en oci*. Las funciones las podras encontrar en el manual de PHP.

      1. Avatar for belial9826 rocio dice:

        Disculpa ese codigo me sirve para conectarme a una base de datos remota ?

        1. Avatar for belial9826 belial9826 dice:

          Claro, solo necesitas cambiar los datos de conexión con el servidor.

  11. Avatar for belial9826 LUIS dice:

    $conn = oci_connect(“pbelial”, “talcosa”, “localhost/electiva”);

    Pregunta: “pbelial” que lleva aqui

    “talcosa”

    “localhost/electiva” me podrias explicar,me encuentro desarrollandi un inventario en

    oracle y estoy detenido en esto, por tu atencion gracias.

    1. Avatar for belial9826 belial9826 dice:

      $conn = oci_connect(“pbelial”, “talcosa”, “localhost/electiva”);

      En el orden de ideas, seria: oci_connect( usuario, contraseña, direccionServidor/SID); Recuerda que estos datos son de tipo string, es por esto que en el ejemplo van entre comillas dobles, el SID es el identificador de tu base de datos en el servidor. Espero que con esto te quede mas claro 🙂

Deja un comentario