Php y Oracle II
Clasificado en:
Uno de los post más 'famosos' es el de oracle. Realmente, es un dolor de muelas trabajar con Oracle, pero que da dinero, da dinero.
Nuevos consejos, como continuación del post Php y Oracle:
- Existen dos extensiones PHP para Oracle: php_oracle y php_oci8. La primera tiene menos funcionalidades, pero es más probable que funcione en una instalación rápida. La segunda tiene más prestaciones y es más rápida, pero deben asegurarse de que su versión del Cliente de Oracle sea igual o superior a la 1.81
- Recuerden que deben descargar el cliente de Oracle e INSTALARLO, y que la versión del cliente debe ser IGUAL O SUPERIOR a 8.1. Repito, repito, repito....
- Instalación: Si ocupan *unix, compilen su PHP con --with-oracle[=DIR] (no recomendado) o --with-oci8[=DIR] , siendo DIR por defecto la variable del entorno ORACLE_HOME; lean el manual para mayores detalles. Para Windows, descomenten en su php.ini la extension php_oracle.dll o php_oci8.dll
- Reinicien el computador después de instalar Oracle. En un Windows 2000 con IIS, no agarraba el dll hasta que apagaron el bicho
- Si al usar adodb les dice que no encuentra ora_logon, hagan la siguiente revisión:
- Instalar el paquete de Oracle
- Compilar con soporte para oracle y/o descomentar en el php.ini las entradas correspondientes
- Reiniciar la máquina
- Usar en
ADONewConnection()como parámetro la versión de la extensión de oracle con la cual van a trabajar. Ergo,$db = ADONewConnection("oracle");para php_oracle y$db = ADONewConnection("oci8");para la oci8. No confundirse!
Eso por ahora. Espero que les sea de alguna utilidad....
- 9822 lecturas

Hola:
¿Donde puedo bajar la versión actualizada de la oci.dll?, necesito actualizarla porque es la única manera de que me funione la programación de php con oracle.
Muchas gracias.
Cecilia.
La última versión de php_oci.dll se encuentra en la distribución estándar de php, que esta en php.net. Es un poco más problemático en Linux, ya que tienes que bajar e instalar las librerías de Oracle antes de intentar siquiera compilar el módulo. Recuerda también el tema de las versiones; con un php posterior a 4.1, necesitas el cliente 8.1 o superior de Oracle.
HolaCLAUDIO: Soy del CCAA de psic. de la UdeC y no puedo contactarte para el asunto de la asesoria web que nos ofreciste. Por favor enviame un correo a rdresdner@udec.cl, o rafadrevi@hotmail.com. GRACIAS
Hola, estoy intentando hacer una pagina web con php que se conecte a una base de datos oracle para ello
tengo instalado php y apache en window y oracle en otra maquina linux.En el php.ini estan descomentadas las
dos lineas( php_oracle.dll , php_oci8.dll ) pero no tengo instalado ningun cliente de oracle.
Cuando intento cargar la pag desde el explore hay veces que no me la carga y otras veces si y otras
me da error del ocilogon o del ociexecute. Si sabeis como resolverlo por favor contesten
hola a todos soy javi y necesito que alguien me ayude, quiero saber si aparte de sql existe otra herramienta mas rapida para hacer busqueda de informacion en una base de datos de oracle.
mil gracias
Hola,
estamos intentando compilar php5.2.4 para integrar las librerias oci8, pero siempre obtenemos el mismo error tras ejecutar "make". Los pasos que hemos realizado son los siguientes:
$ unzip instantclient-basic-linux32-10.2.0.1-20050713.zip
$ unzip instantclient-sdk-linux32-10.2.0.1-20050713.zip
# mkdir -p /opt/oracle/instantclient
# mv instantclient_10_2/* /opt/oracle/instantclient/.
# cd /opt/oracle/instantclient
# ln -s libclntsh.so.10.1 libclntsh.so
# ln -s libocci.so.10.1 libocci.so
# echo /opt/oracle/instantclient >> /etc/ld.so.conf
# ldconfig
# cd /etc/profile.d
# echo export LD_LIBRARY_PATH=/opt/oracle/instantclient>oracle.sh
# chmod +x oracle.sh
# tar zxvf php-5.2.4.tar.gz
# cd php-5.2.4
# ./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient
# make
El error que se produce es el siguiente:
/opt/oracle/instantclient/libclntsh.so: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [ext/oci8/oci8.la] Error 1
¿Podríais ayudarnos, hemos mirado en internet y no encontramos más pasos que realizar?
Mucahs gracias
Yo tengo The AppServ Open Project - 2.5.9 for Windows
Que contiene:
Apache Web Server Version 2.2.4
PHP Script Language Version 5.2.3
Y una base de datos Oracle 9i a la que no he podido conectar con ninguna de sus sugerencias...
Segui los pasos de oracle oficial:
http://www.oracle.com/technology/tech/php/htdocs/inst_php_apache_windows.html
todo paso a paso.
Les agradezco cualquier sugerencia para probar conexiones via odbc y directamente tambien.
Gracias de antemanos..... sabigual@yahoo.com
Ehhhh.... se supone que las bases de datos relacionales están hechas para trabajar vía SQL. Los otros métodos, por decir lo menos, son un tanto primitivos.
Suerte con la búsqueda.
No has probado con Oracle 10?
Ups, me pillaste. Esta está para un crack de oracle. De partida, ¿oracle funciona bien?
Después de probar varias cosas para conectar el cliente de oracle con la librería php_oci8.dll de PHP, me decía que no podía cargar dicha librería(acceso denegado). Lo que sucedía era que a la carpeta de oracle (C:\oracle) tenía que darle al usuario "Everyone" el permiso de control total (lectura, escritura...), y verificar que dentro de este directorio, la carpeta \bin también tubiera el mismo permiso, por eos me denegaba el acceso, no podía abrir la librería oci.dll.
Saludos y espero le sirva a alguien.
Lorena
Oye, muchas gracias Lore.
Por si acaso, la Lore es una chica muy simpática y bastante avezada en todo lo relacionado en bases de datos en entornos empresariales. Aprovechen de explotarla :)
HOLA A TODOS:
COMO HAGO PARA TRABAJAR PHP Y ORACLE POR FAVOR QUIEN ME PUEDE DAR LOS PASOS O AYUDARME.
LO QUE QUIERO HACER ES UN MNATENIMIENTO EN PHP USANDO COMO BASE DE DATOS ORACLE PERO EL CODIGO YA LO TENGO PERO CON MYSQL Y POSTGRESQL AHORA ME GUSTARIA IMPLEMENTARLO CON ORACLE QUIEN ME`PUEDE AYUDAR EN ESO SOY NUEVO EN ORACLE. POR FAVOR AYUDENME EN PHP Y ORACLE QUE CONFIGURACIONES DEBO HACER ANTES DE CORRER LA MIS PAGINAS PHP. QUIEN ME AYUDE LE MANDO A SU EMAIL MIS ARCHIVOS DE PHP CON MYSQL/POSTGRESQL/ Y AHORA ORACLE GRACIAS POR FAVOR AMIGOS AYUDENME
Hola a todos quisiera saber si alguien instalo php con soporte para oracle en linux
Mi configuaracion es la siguiente:
RedHat Enterprice Advance Server 3.0 upgrade 1
Apache 2.046
Mi problema ocurre al intentar compilar php ya sea version 4 o 5 con soporte para oci8 me ocurre el siguiente error:
./configure --prefix=/usr/local --with-oci8=$ORACLE_HOME --disable-all
...
...
/home/oracle/php-4.4.1/ext/oci8/oci8.c:5559: petición del miembro `in_call' en algo que no es estructura ó unión
/home/oracle/php-4.4.1/ext/oci8/oci8.c:5567: petición del miembro `id' en algo que no es estructura ó unión
make: *** [ext/oci8/oci8.lo] Error 1
Me sucedio lo mismo al intentar instalar php5 que es la version que necesito, pero como me fue mal lo intente con php4 pero me genero el mismo error.
Espero alguien pueda ayudar.
gracias de antemano!
Víctor!!
Buenas.
Estoy intentando conectarme con Oracle desde php con oci y al momento de ejecutar la sentencia ociparse el Apache produce un error y se reinicia. Si a alguien le ha sucedido por favor responder. Gracias.
Hola,
Yo resolvi mi problema de conexion entre oracle y php en windows instalando WAMP la version 1.5.0 la puedes descargar en https://sourceforge.net/project/showfiles.php?group_id=116092
con esto te despreocupas del resto, en su consola de administracion tiene la opcion de php_oci8 la seleccionas y el la descomenta del php.ini.
Para que funcione debes tener instalado el cliente oracle en tu servidor y a la vez tener compartida la carpeta de oracle.
Reinicias el apache y listo.
saludos..
Víctor!!
Desarrolle unas paginas en PHP que hacen consultas a bases de datos Orcale, las desarrollo localmente usando funciones odbc. Ahora necesito colocar en produccion este desarrollo con las siguientes caracteristicas del servidor: LINUX /APACHE y funciona con paginas desarrolladas en JSP.
Por favor me pueden indicar que se debe hacer en el servidor para que mis paginas en PHP funcionen.
Yo estoy cambiando en mis paginas las funciones de oracle con odbc por las siguientes:
$db = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db.192........)(PORT = db.1521)) ) (CONNECT_DATA = (SID = NNNN) ) )";
$conex = OCILogon("usuario","pass",$db);
O COMO SE HACE AQUI________
GRACIAS
Llevo semanas en esto..........
bueno aki les dejare la forma de trabajar con oracle desde php
pare este ejercicio debemos contar con los siguiente...
un servidor de BD (oracle) y otro servidor web montado en windows (phptriad lo pueden descargar y te intala el apache y php sin mucho rollo)
ya teniendo montado el servidor web con apahe y php...
procederemos a modificar el php.ini
en Windows Extensions
buscar extension=php_oci8.dll y descomentarlo (qitarle el ';' al pricipio) y salvamos los cambios
ok...
ahora lo mas importante debemos tener creado un TNS para conectarnos a oracle..
como se hace esto.
bueno junto con los cd de oracle biene uno ke nos permite crear clientes para oracle (es un cd ke te permie conectarte desde otro pc al servidor de oracle)
una vez instalado debes entrar a "Net Easy Config" y crear un servicio de red.
para este ejemplo le llamaremos "SERVIDOR"
el tipo de servicio es TCP/IP
el host es la direccion del servidor de BD (ej: 192.168.1.100) el numero de puerto no lo modifikes
en el SID le indicaremos el nombre del servicio el cual se definio al crar la bd. (ej:ORAC)
y finalmente hacer un aprueba de coneccion...
ahora
crearems nuetro primer php conectado a oracle:
<?php
$pub_user='scott';
$pub_pass='tiger';
//$pub_serv='(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))(CONNECT_DATA = (SID = ORAC)))';
$conn = ocinlogon($pub_user,$pub_pass,$pub_serv);
$sql = "select DEPTNO, DNAME ";
$sql .= "from dept ";
$stmt = ociparse($conn,$sql);
OCIDefineByName($stmt,"DEPTNO",$codigo);
OCIDefineByName($stmt,"DNAME",$nombre);
ociexecute($stmt);
while (ocifetch($stmt))
{
echo "$codigo - $nombre ";
}
ocifreestatement($stmt);
ocilogoff($conn);
?>
saludos...
Muchas gracias, estimado trauco. Espero que tus consejos le ayuden a alguno de nuestros oraclianos usuarios.
al momento de realizar una consulta sql en oracle en la cual consulten datos en mas de una tabla,
deben de tener en cuenta de que para que la consulta sea mas rapida la tabla de mayor tamamaño debe ir primero...
entre mas grande la tabla mas a la izquierda en el FROM
un ejemplo de esto seria
tengo 2 tablas
una de clientes y la otra de ciudades
en el sql debemos colocar por ejemplo
select clientes.nombre, ciudad.ciudad_glosa
from clientes, ciudades
where cliente.codigo_ciudad = ciudad.codigo_ciudad
pd.si necesitan ayuda en algunas consultas Sql en ORACLE no duden en consultar.
Claudio, buenos dias. Tengo un desarrollo en php5 y Oracle, y como es posible que el mismo se instale en otros lugares con SQL Server, estoy pensando en hacer una capa de abstraccion que me facilite esta tarea (ademas de migrar a objetos). Estoy buscando documentación y me topé con PDO pero lo veo complejo. Tienes alguna experiencia al respecto o conoces de algun sitio en español que me pueda guiar?.
Agradezco desde ya tu disposición.
Cordiales Saludos.
Sergio.
¿Para que reinventar la rueda? Te recomiendo que le eches una miradita a adodb, que es una excelente biblioteca de abstracción de base de datos. Puedes tranquilamente usar oracle y mssql; incluso, tiene soporte para pdo.
¿como puedo hacer un select count ha una tabla y el resultado en vez de imprimirlo por pantalla guardarlo en una variable, usando oracle.dll
Hola: yo solo quiero a portar un poco de experiencia (muy poca) espero que les sirva. Al querer habilitar la extencion php_oci8.dll en el PHP (evidentemente ya todo configurado) al reiniciar al apache mandaba un mensaje de error diciendo que "unload ..blbla php_oci8.dll, not found" o algo parecido bueno para resolver esto he realizado varios pasos pero antes debo decir que la extencion php_oci8.dll que viene con la version PHP 5.1.4 NO SIRVE asi que NO INTENTEN CON ESTA VERSION yo tengo instalado apache 2.0 con php 5.0.4 les recomiendo esta si no tienen inconvenientes, bueno les suguiero que intenten los siguientes pasos si
1. Darle permisos de EVERYONE o TODOS a las carpetas de donde esta instalado PHP y la carpeta EXT dentro de ella.
2. Copiar el archivo php_oci8.dll en System32 o System (segun sea el caso)
3. poner en la variable PATH de windows (panel control->system->advanced->Environment Variable) la ruta de la carpeta "ext" que esta en la carpeta "php" Ej. C:\SERVIDOR\PHP\EXT
4. REINICIAR LA MAQUINA PARA QUE TENGA EFECTO
espero que les ayude un poco esto y tengan en cuenta que la version 5.1.4 que viene en la distribucion de php no sirve el archivo saludos a todos.
ok disculpa pero yo tengo un grave error, uso php5.2 con oracle9i. para hacer una conexion con bd uso el ora_connect al parecer no se encuentran distintas librerias, como php_oci8.dll, php_pdo_oci8.dll entre otras, ya las baje y las instale nuevamente pero nada. sera que las librerias deben estar acorde con la version de php? por fa como donde puedo bajar librerias o que puedo hacer
Sí, las versiones de las librerías deben ser las mismas del php que las utiliza. Revisa en PECL el paquete de oci8: http://pecl.php.net/package/oci8
Enviar un comentario nuevo