Categorías: Oracle

Conectar PHP con Oracle 11g

Ú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():

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:

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

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!

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:

Ver Código

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:

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

WP Dev JaGonzalez

Hijo, esposo y padre de un hermoso niño. Amante de los animales, la tecnología, informática y programación. Si tienes alguna duda, inquietud, comentario o deseas comunicarte directamente conmigo, puedes enviarme un correo electrónico a admin@jagonzalez.org

Ver comentarios

  • 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

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

    • 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 guayoswing@gmail.com como podria contactarme disculpa

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

  • 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

  • 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

  • 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");

  • 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');

    • 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 admin@jagonzalez.org Saludos.

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

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

Compartir
Publicado por
WP Dev JaGonzalez

Entradas recientes

iPhone Hackeado: Qué Hacer para Proteger tu Dispositivo y Asegurar tu Seguridad

¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…

4 meses hace

Cómo Restablecer un iPhone a su Estado de Fábrica

Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…

4 meses hace

Motorola planea lanzar al menos dos nuevos teléfonos Moto G en septiembre

Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…

1 año hace

El equipo de WizardLM afirma que un modelo de IA de terceros les robó el trabajo

Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…

1 año hace

Las fallas del complemento Jupiter X Core amenazaron a 172.000 sitios web con apropiaciones de cuentas

Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…

1 año hace

Consola portátil Xbox: aquí tienes todo lo que necesitas saber al respecto

Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…

1 año hace