2008-11-16 11 views
5

DBD y Oracle Masters:¿Por qué mi script Perl CGI no puede encontrar Oracle DBD?

Tengo una aplicación web Perl que se comporta de manera extraña. Lo estoy usando para leer algunas cosas de un DB de Oracle e informar. Tengo instalada la versión 11.1.0.6.0 del cliente instantáneo de Oracle. Me estoy ejecutando en WinXP y tengo la variable de entorno PATH configurada para la ubicación del cliente instantáneo. Tengo Apache2 para mi servidor web.

Aquí está el problema: cuando ejecuto la aplicación desde una línea de comandos, funciona sin problemas. Sin embargo, cuando corro de http://127.0.0.1/cgi-bin/a.cgi, me sale el siguiente error de acceso DB:

install_driver(Oracle) failed: Can't load 'C:/usr/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:The specified module could not be found at C:/usr/lib/DynaLoader.pm line 202. at (eval 9) line 3

La intuición me dice que es un problema de permisos, pero no estoy seguro de dónde buscar más. ¿Alguien puede arrojar algo de luz sobre esto? Agradecería cualquier ayuda.

Gracias, Saker Ghani

+0

¿Puede proporcionar el código de las llamadas mencionadas en el mensaje de error? – Svante

+0

¿Y hay algún error en el registro de errores de Apache? –

Respuesta

2

El hecho de que el error se muestra la ruta completa de la DLL sugiere que el sistema no está teniendo ningún problema para encontrar el archivo DLL, por lo que hace volver a su teoría de que los permisos de archivo son la cuestión.

Para probar si realmente es un problema de permisos, intente escribir un script CGI Perl trivial que no hace más que abrir directamente ese archivo .DLL específico (con una llamada normal open) e informa si funcionó o no.

1

Gracias Alnitak. Intenté hacer lo que sugeriste, y 'abrir' abrió con éxito 'C: /usr/lib/auto/DBD/Oracle/Oracle.dll'. Recuerdo haber visto este error exacto cuando estaba desarrollando en una máquina diferente, pero eso se debía a que las librerías de Oracle Instant Client se estaban equivocando. Después de instalarlos y establecer la variable 'Ruta', todo comenzó a funcionar bien.

1

He tenido el mismo problema, cuando al acceder al programa cgi perl a través de la interfaz estaba informando del error "Install_driver (Oracle) failed: No se puede cargar 'C:/Perl/lib/auto/DBD/Oracle/Oracle .dll 'para el módulo DBD :: Oracle: archivo_carga: Acceso denegado en C: /Perl/lib/DynaLoader.pm línea 201 ".

que estaba usando Perl 5.10 en Windows 2003 Server con IIS 6.

La resolución fue dar los permisos en el directorio Perl para "Todo el mundo", así como en el Oracle carpeta de instalación.

Cuestiones relacionadas