PDA

Ver la Versión Completa : Error «illegal line ""» en extensión DLL que accede a Firebird


Al González
08-09-2005, 23:04:36
¡Buen día a todos!

Este mensaje es parte de una investigación que estoy realizando para detectar la causa y solución de una anomalía surgida entre PHP 4 y una extensión DLL para PHP creada con Delphi 7.

Uso una biblioteca de componentes llamada PHPDelphi que facilita la creación de extensiones Win32 para PHP usando Delphi (tomar en cuenta que PHP no importa de forma directa las funciones de una DLL, como lo hace normalmente cualquier módulo ejecutable).

Cree una extensión DLL Win32 para PHP. Hago que PHP.exe la cargue en memoria, asignándole una entrada en PHP.ini (extension=MiDLL.dll). Inicialmente probé su funcionalidad con rutinas que hacen operaciones sencillas, llamadas desde programas .php, y las páginas Web resultantes se mostraron correctamente en el navegador.

Pero luego agregué a la extensión DLL una función que accede a una base de datos Firebird y ahí se presentó el problema. Para facilitar su depuración desde Delphi, hago llamar a dicha función en el código de inicialización de la DLL.

Ahora la DLL está programada para, al cargarse en memoria, acceder a una base de datos Firebird y realizar ciertas tareas con ella. Esto fue implementado con componentes IBX (TIBDataBase, etc.). Si yo creo una aplicación de prueba que cargue mi DLL, todo se ejecuta como se espera.

Pero si es PHP.exe el que carga la DLL (habiéndolo establecido en PHP.ini), entonces cuando el componente TIBDataBase intenta abrir la conexión (MiIBDataBase.Open) aparece una ventana de error (cuyo remitente pudiera ser el programa cliente o el programa servidor de Firebird) con el mensaje:


C:\Archivos de programa\Firebird\Firebird_1_5\firebird.conf: illegal line ""


Busqué en la Red información al respecto pero sólo encontré un puñado de mensajes sin solución sobre problemas que arrojaban el mismo mensaje de error.

¿Cómo carga PHP.exe una DLL para que afecte de esa manera el comportamiento de Firebird? :confused:

Les agradezco de antemano cualquier información que pueda serme útil en esta investigación.

Un abrazo Web.

Al González. :)

fredo
09-09-2005, 21:10:25
Probaste con dbexpress?????? he tratado de trabajar con intraweb i los componentes IBX y no funcionan, DBExpress si, talvez te ocurra lo mismo, si te funcina nos avisas....

saludos y suerte. :D

fduron
19-09-2005, 15:16:07
He estado bajo investigacion respecto a este tema, hice algunas pruebas con la biblioteca que usa Al Gonzalez, probe llamando la extensión de PHP desde una aplicacion y funciona correctamente, desde una pagina PHP no respondio, me informaba que la base de datos no estaba disponible "Database no available", al final agregue la direccion IP a la ruta de la base de datos y ahora funciona a la perfeccion, no pude agregar codigo en la seccion initialization, o mejor dicho, no se ejecuta, yo creo que se debe a que los objetos IBDataBase e IBQuery que uso en mi investigacion no se han creado al momento de lanzar el initialization