Foros del Web » Programando para Internet » PHP »

Conexion PHP Oracle remoto

Estas en el tema de Conexion PHP Oracle remoto en el foro de PHP en Foros del Web. Que tal a todos, tengo que realizar una conexion entre un oracle server 8i (remoto), desde PHP 5, la verdad es que ya he intentado ...
  #1 (permalink)  
Antiguo 08/03/2012, 16:09
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Conexion PHP Oracle remoto

Que tal a todos, tengo que realizar una conexion entre un oracle server 8i (remoto), desde PHP 5, la verdad es que ya he intentado de todas las formas que me he visto en Internet, ya tengo habilitada la extension de oracle en el archivo php.ini (extension=php_oci8.dll). Ahora bien, dejando a un lado el PHP, he podido resolver un tnsping a mi base de datos desde el cmd, y satisfactoriamente logro conexion con TOAD.

Tambien he intentado con adodb.inc, pero no resuelvo conectarme. Ademas de haberme ya leido y casi aprendido de memoria el tuto llamado "The Underground PHP and Oracle Manual"

Alguien me podria iluminar con un ejemplo de conexion remota a oracle 8i desde php, mis datos son los siguientes:

LGM3=
(DESCRIPTION=
( ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=LGM3) (PORT=1521)))
( CONNECT_DATA= (SID=ORA0) )
)

Les agradezco desde ahora por su ayuda.

Última edición por manuel2011; 08/03/2012 a las 16:15
  #2 (permalink)  
Antiguo 09/03/2012, 01:10
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Conexion PHP Oracle remoto

Cuál es el mensaje / código de error? Has consultado en los foros de Oracle? Hay documentación específica para este problema.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 10/03/2012, 20:58
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Conexion PHP Oracle remoto

Holas,

Seria bueno ver como te conectas y que errores en si te muestran:

http://www.php.net/manual/en/function.oci-connect.php

Saludos
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 12/03/2012, 13:54
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Cita:
Iniciado por repara2 Ver Mensaje
Cuál es el mensaje / código de error? Has consultado en los foros de Oracle? Hay documentación específica para este problema.

Hola que tal amigos, una disculpa por lo tardio de mi mensaje pero es que la verdad he tenido algunos problemas. Mas en fin, a continuacion muestro mi codigo con el que intento realizar mi conexión PHP a Oracle:

<?php
include "adodb/adodb.inc.php";

$conn = oci_connect("adm", "adm", "10.201.3.58/Ora0");


if (!$conn) {
$e = oci_error();
echo $e['message']."<br>";
exitexit;
}


$sql = "select table_name from user_tables";


$st = oci_parse($conn, $sql);


$miId = 101;
oci_bind_by_name($s, ":id", $miId);


oci_execute($st);


while ($row = oci_fetch_array($st, OCI_ASSOC)) {
echo $row[id]." ".$row[table_name]."<br>";
}


oci_free_statement($st);


oci_close($conn);
?>




El error que me muestra es el siguiente, parece ser con la funcion de oci_connect.

( ! ) Fatal error: Call to undefined function oci_connect() in C:\wamp3\www\reportes\prueba.php on line 4

La verdad es que estoy en busca de algun ejemplo que me pueda servir, agradezco su atencion y tiempo prestado de antemano.
  #5 (permalink)  
Antiguo 12/03/2012, 14:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Conexion PHP Oracle remoto

Eso significa que no tienes la extensión de Oracle instalada, para instalarla debes de hacer lo siguiente:

- Instalar el Instaclient en tu computadora
- Asegurarte que en el PATH de tu OS tengas la carpeta de los binarios de Oracle
- Habilitar en tu php.ini la extensión de Oracle (php_oci8.dll)

Saludos.
  #6 (permalink)  
Antiguo 12/03/2012, 15:38
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Cita:
Iniciado por GatorV Ver Mensaje
Eso significa que no tienes la extensión de Oracle instalada, para instalarla debes de hacer lo siguiente:

- Instalar el Instaclient en tu computadora
- Asegurarte que en el PATH de tu OS tengas la carpeta de los binarios de Oracle
- Habilitar en tu php.ini la extensión de Oracle (php_oci8.dll)

Saludos.

El Instantclient no le he podido instalar, lo he descargado y solo contiene archivos dll (oci.dll, ocijdbc11.dll, oraocci11.dll, etcetera.) No se como definir la ruta de carga de la biblioteca en mi entorno.

extension=php_oci8.dll (Habilitada)
TNSPING LGM3 (Ok)


GatorV, podrias aclararme un poco el tema?

Gracias.
  #7 (permalink)  
Antiguo 12/03/2012, 16:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Conexion PHP Oracle remoto

Es forzoso que instales el InstaClient, es un instalador (exe) bastante grande eso sí, una vez que se instala, se agrega sólito al PATH por lo que solo tienes que descomentar la extensión.

Sin el instaclient, no puede funcionar la extensión de PHP.

Saludos.
  #8 (permalink)  
Antiguo 12/03/2012, 18:54
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Conexion PHP Oracle remoto

Estas usando XAMP ? o algun otro parecido?.
__________________
.: Gildus :.
  #9 (permalink)  
Antiguo 13/03/2012, 11:40
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Que tal gildus, antes que nada agradezco tu interés en ayudarme, en fin, yo utilizo WAMP 2.1, Apache Versión: 2.2.17 PHP Versión: 5.3.5.

Mi servidor Oracle es remoto. (Oracle 8i)
Y en mi servidor Web tengo instalado el Oracle client 9i, además de tener habilitada la extensión oci8 (php_oci8.dll) en mi php.ini

Por lo tanto sigo trabajando con lo que GastorV me comentó. Tú tendrás alguna otra idea?
  #10 (permalink)  
Antiguo 13/03/2012, 13:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Conexion PHP Oracle remoto

Si te sigue apareciendo esto:

Fatal error: Call to undefined function oci_connect() in C:\wamp3\www\reportes\prueba.php on line 4

Es porque sigue sin cargar la extensión de OCI, verifica todos los puntos que te he expuesto antes de poder habilitar la extensión de Oracle.

Saludos.
  #11 (permalink)  
Antiguo 13/03/2012, 19:58
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Conexion PHP Oracle remoto

Personalmente no me gusta instalar XAMP o WAMP u otros parecidos, son muy cerrados y limitados para aplicar mas cosas. Te recomendaria instalar PHP por separado, Apache por separado solo esos dos, y listo, de alli recien descomentas o habilitas las librerias.

Saludos
__________________
.: Gildus :.
  #12 (permalink)  
Antiguo 14/03/2012, 18:19
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Que tal amigos, me he instalado el apache 2.0.58 y un php 4.4.9 debido a que googleando encontré que dichas versiones funcan de maravilla con Oracle 8i server, además me instale el cliente de Oracle 9i (funciona, tnsping LGM3 = OK), después descargue el paquete de Instant Client Basic package for Windows (oci8) ya que es necesario colocar el path de la librería en las variables de entorno de mi servidor. Mantenía la gran esperanza de que después de seguir todos estos minuciosos pasos, por fin podría cantar la victoria... Pero tristemente me encuentro con que mi test de conexión, que debajo describo, me arroja en la cara el mismo error:

<?php
$db_test = '(DESCRIPTION=( ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=LGM3) (PORT=1521)))( CONNECT_DATA= (SID=ORA0) ))';
$c = oci_connect("adm", "adm", $db_test);
$s = oci_parse($c,'SELECT TABLE_NAME FROM USER_TABLES;');
oci_execute($s);
while ($res = oci_fetch_array($s, OCI_ASSOC)) {
var_dump($res);
}
?>


Error:
Fatal error: Call to undefined function: oci_connect() in C:\wamp\www\reportes\prueba.php on line 3


Comentario:
PHP info -- >Muestra la extensión de oci como enabled, debajo me muestra una línea la cual dice:
Revision: $Revision: 1.183.2.18.2.5 $

Cuando yo tenga la respuesta de por que no me he podido conectar, lo posteare aquí. Pero si alguien quiere comentar algo, que mas que perfecto sería.

Saludos

Última edición por manuel2011; 14/03/2012 a las 18:22 Razón: Me falto escribir el error que me arroja mi pag test
  #13 (permalink)  
Antiguo 14/03/2012, 18:35
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Conexion PHP Oracle remoto

Es raro, porque si instalastes el apache que mencionas no deberia salir en el error con wamp:

C:\wamp\...

Sigues usando Wamp? o lo instalastes por separado?, Seria bueno mejor trabajarlos e instalarlos independientemente:

http://windows.php.net/downloads/rel...32-VC6-x86.zip

http://www.gtlib.gatech.edu/pub/apac...ssl-0.9.8t.msi

Saludos
__________________
.: Gildus :.
  #14 (permalink)  
Antiguo 19/03/2012, 16:18
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Que tal!, resulta que ya instale el Apache 2.2 y el PHP 5.2.17 (En mi servidor Web) debido a que según yo y todo lo que he leído, estas versiones son compatibles entre sí y con Oracle 8i Server (Servidor de Base de datos), por cliente de Oracle tengo el 9i (instalado también en mi servidor Web), y el instant client la versión mas reciente que es la 11.2.0.2.0 (En mi Serv. Web).

Mi problema continua por que aun no puedo ver la librería cargada en phpinfo, he colocado en el path de las variables de entorno, la dirección del instant client 11.2.0.2.0 (C:\instantclient11)


Por ahora me he olvidado de todo lo que tenga que ver a intentar una conexión php-Oracle hasta que por fin me aparezca cargada la librería en php, puesto que de nada sirve fijarme en un error que refiere a un nivel más arriba del que estoy, ya que primero debo de tener las bases y después intentar realizar mi primer inserción o selección desde un script de php.

Por cierto (Gildus) así quedaron mis rutas:
Apache: (C:\Apache2.2)
PHP: (C:\php)
InstantClient: (C:\instantclient_11_2)
Cliente de Oracle 9i: (C:\oracle\ora92)


Ya hice lo que GastorV me comentó, al igual que lo que Gildus. Ideas compañeros?
  #15 (permalink)  
Antiguo 19/03/2012, 18:34
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Conexion PHP Oracle remoto

Si tienes esa configuración ahora si es mejor y asi deberias de poder habilitar sin problemas las librerias que deseas. Cuando descomprimistes el zip del php en el C:\ dentro trae un php.ini-recomended, ese mismo me imagino que lo copeastes en el C:\windows\php.ini

Si es asi, en el mismo php.ini tienes que descomentar la libreria y luego reinicias el apache y todo listo, luego haces un phpinfo y te deberia de salir la libreria instalada.

Saludos
__________________
.: Gildus :.
  #16 (permalink)  
Antiguo 20/03/2012, 00:47
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Tal vez lo que a continuación relato parezca más un sermón que un simpe posteo común y corriente de no más de 5 o 10 líneas, pero en verdad me interesa dejarles en claro a las personas que deseen configurar la librería Oci8 de php, el cómo hacerlo.

Dividido en pasos, yo lo enumero como a continuación:

Paso 0.- Entender que una Conexión con el Oraculo no es tan sencilla como las que ya muchos sabemos y hacemos con MySQL (Sin ningún ánimo de ofender a nadie). Aunado a ello, tenemos que saber todo el circo que se debe de armar tan solo para poder cargar la librería Oci8, creo que existe más quebradera de cabeza cuando utilizas un Serv. de BD anterior como lo es en mi caso (Oracle 8i).

Paso 1.- Primero que nada tenemos que leer e informarnos acerca de las compatibilidades con nuestra BD Oracle. Para saber que versión del cliente utilizaremos, después tener presente que la ultima versión de PHP está diseñada o pensada por así decirlo para las últimas versiones de Oracle (11g por ej.), ya que sabes que versión de PHP usar, ahora a preocuparse por el Servidor Web que utilizaremos (La preocupación viene cuando les digo que también deben ser compatibles estos dos), pasado esto, la "chamba" es saber que versión del OracleInstantClient es compatible con nuestro Servidor Web. YO cometí el error de creer que este tenía que ser compatible con mi Serv PHP que utilizo, pero oh sorpresa! El OracleInstantClient debe ser compatible con el Serv. Web utilizado (Yo, apache), en resumen, primero obtener todo el software que necesitamos y que sabemos son compatibles, yo utilice lo siguiente:

-Base de datos (Oracle 8i) (Unixware)
-Cliente de Oracle 9i (Windows7)
-Apache 2.2.22 (")
-PHP 5.2.17 (")
-OracleInstantClient 11.1.0.6.0 (")

Mañana describiré el paso 2, puesto que hoy estoy un poco cansado. Y con detalle apuntare que líneas modificar del httpd.conf y del php.ini. Lo que si no quiero dejar para mañana es comentar que el phpinfo ya me muestra la librería Oci8 cargada.
  #17 (permalink)  
Antiguo 21/03/2012, 09:37
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Buenas, ya que tengo mi libreria cargada (oci8) e intento conectarme me resuelve el siguiente error:

Warning: ociplogon() [function.ociplogon]: ORA-12705: Cannot access NLS data files or invalid environment specified in C:\Apache\htdocs\

Sera que tengo que meterme en el editor de registro como vi en un foro de oracle, o alguien sabe por donde va esto? Mientras trabajare en ello.


Por cierto Gildus, no pude contestar tu mensaje privado, ya que al parecer no recibes mensajes privados, Quiero agradecer a GastorV y a Gildus por su apoyo en la carga de mi libreria de OCI8.

Saludos!
  #18 (permalink)  
Antiguo 21/03/2012, 14:25
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Conexion PHP Oracle remoto

Cita:
Iniciado por manuel2011 Ver Mensaje
Buenas, ya que tengo mi libreria cargada (oci8) e intento conectarme me resuelve el siguiente error:

Warning: ociplogon() [function.ociplogon]: ORA-12705: Cannot access NLS data files or invalid environment specified in C:\Apache\htdocs\

Sera que tengo que meterme en el editor de registro como vi en un foro de oracle, o alguien sabe por donde va esto? Mientras trabajare en ello.


Por cierto Gildus, no pude contestar tu mensaje privado, ya que al parecer no recibes mensajes privados, Quiero agradecer a GastorV y a Gildus por su apoyo en la carga de mi libreria de OCI8.

Saludos!
Solucionado, pegandole al editor de registros de Windows:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
NLS_LANG = AMERICAN_AMERICA.WE8ISO8859P1


AMERICAN_AMERICA.WE8ISO8859P1 es la configuracion que mi servidor oracle, la puedes obtener con el sig query:

SELECT USERENV ('language') FROM DUAL;
  #19 (permalink)  
Antiguo 24/04/2012, 18:17
Avatar de manuel2011  
Fecha de Ingreso: marzo-2012
Ubicación: Cuautla, Morelos
Mensajes: 31
Antigüedad: 12 años, 1 mes
Puntos: 1
De acuerdo Respuesta: Conexion PHP Oracle remoto

Resulto, como?

Instalando un servidor Oracle 10g, creando un DBlink que apunte hacia el oracle server 8, y finalmente el php se conecta sin problemas al servidor oracle 10g...

Es decir, utilice el servidor 10g solo como intermediario (puente), es un poco más lento, pero al final sirve.

Saludos

Etiquetas: oracle
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:42.