DESESPERADO: Conectar Oracle con PHP

CarlosLL
29 de Abril del 2009
Hola a [email protected],
Llevo cerca de 1 mes (y no es coña) intentando conectar con la BD Oracle mediante código PHP y empiezo a desesperarme. Os cuento:

+ lo que tengo: S.O. WindowsXP Prof, Lenguaje PHP 4.3.3, Servidor Apache 1.3.24, Cliente Oracle 8i

+ lo que quiero: Conectar mi aplicación web desarrollada en PHP con la BD Oracle 8i (alojada remoto) para hacer las típicas operaciones de consulta, inserción,...

+ mi problema:
instalo el cliente Oracle en mi equipo (c:Orant), instalo y configuro PHP en mi equipo (c:PHP, php.ini >> edito "extension_dir", descomento "php_oci8.dll" y "php_oracle.dll",...), instalo y configuro Apache (C:Apache Group, http.conf), pero al arrancar Apache/PHP me devuelve un warning que debo aceptar varias veces: "OCI.DLL: no se puede encontrar el módulo especificado" (sin más detalles) y cuyo resultado es que no puedo usar las funciones oci en mi código php porque me devuelve error de "función no declarada" (osea, que Apache/PHP no lee la librería "php_oci8.dll", que seguramente hará uso de la librería del cliente Oracle "oci.dll").

+ problemas anteriores que he tenido antes de llegar a este punto (por si sirven de algo o dan ideas):
antes me salian errores como "Unable to load dynamic library 'C:phpextensionsphp_oci8.dll' - The specified module could not be found." y "Unable to load dynamic library 'C:phpextensionsphp_oracle.dll' - The specified module could not be found.". No se haciendo muy bien qué (creo que copiando ciertas librerias a ciertos directorios) he logrado que "php_oracle.dll" no me de más problemas (pudiendo así conectar con la BD mediante la funión ora_logon), pero php_oci8.dll sigue dando por saco (y según tengo entendido, el método OCI me conviene más que el ORA, osea, que más me vale hacerla funcionar de cara a cuando tenga que ponerme a programar).

+ algunas soluciones probadas sin éxito (sacadas de foros en castellano, inglés, chino, alemán,... al menos esto me valdrá para aprender idiomas XD):
A) copiar las librerias php_oci8.dll, php_oracle.dll, php4ts.dll y oci.dll (necesarias para acceder a Oracle con PHP mediante funciones ORA o OCI) a los directorios donde Apache/PHP debería leerlas --> esto ha acabado por ser un cachondeo porque tras consultar en varios foros donde cada uno proponía un directorio donde situarlas (c:windows, c:windowssystem32, c:{APACHE_PATH}apache, c:{PHP_PATH}, c:{PHP_PATH}extensions,...), he terminado por copiarlas a todos y a tomar por culo (perdon por la expresión). Se supone que "php_oracle.dll" y "php_oci8.dll" vienen con la instalación de PHP y se guardan en extensions, pero no se porque al descomentarlas de "php.ini" no hace caso y no las coge. He leido que puede que sea que Apache/PHP se haga la pixa un lio (vete a saber porque) y que por eso debía copiarlas en otros directorios por si alguno "echaba raices y la planta crecia", así que haciendolo he sacado adelante "php_oracle.dll" (ya no me causa esos warnings). El problema es que oci.dll viene con la instalación de Oracle Client, en c:orantbin, y esta librería parece que es la que no se aclara con "php_oci8.dll" y me está dando tantos problemas, así que me las llevo cogiditas de la mano de un directorio a otro a ver si copiándolas en otros sitios apache/php le da por aceptarlas, pero nada.
B) he reinstalado distintas versiones de Apache y PHP a ver si daba con alguna versión de librería que no causara esos problemas, pero de momento nada de nada.

+ algunas ideas:
a) tras forear muchiiiiiiisimo, he leido que es posible que la versión de la libreria OCI.DLL del cliente Oracle no sea compatible con la librería de php_oci8.dll de PHP y hay funciones/métodos/... que no reconoce? en ese caso, debo bajarme otras versiones y machacarlas? pero unas versiones anteriores o posteriores de dichas librerías? de la librería oci.dll, o de php_oci8.dll, o de ambas?...
b) debo moverlas a algún directorio que no he probado todavía?
c) debo darme por vencido y mandarlo todo a tomar viento? :'(
d) debo tirarme por la ventana atado a la CPU de mi PC para asegurar una caida más rápida y dolorosa? :'(

Gracias por vuestro tiempo y espero una respuesta que acabe con mi sufrimiento y me permita dormir tranquilo.
PD: mi reino por una pista, aunque sea falsa!!! (abstenerse de pegar enlaces a tutoriales de instalación de PHP, Apache, Oracle,... pues creo que ya los he hecho todos y incluso empiezo a aprendermelos de memoria)

jsdblasco
29 de Abril del 2009
yo he solucionado el problema con php_oci8.dll descargandome de oracle el instantclient y copiando el fichero oci8.dll en c:windowssystem32.
Por lo que he deducido que el oci.dll del cliente oracle que se encuentra en la carpeta oraclebin no es compatible con la versión de php_oci8.dll.

espero que os sirva