2011-06-15 12 views
5

En primer lugar, esto es aproximadamente php4Delphi no RadPHP (anteriormente Delphi para PHP).Escritura de extensiones de PHP utilizando Delphi 2010 y php4Delphi

Usando

  • Delphi 2010
  • PHP 5.3.6 (VC9, NTS)
  • php4Delphi 7,2 (compilado con la directiva VC9)
  • Windows Server 2008 R2
  • IIS 7

Al intentar ejecutar la extensión de ejemplo php4Delphi delphi_math.dll en el servidor IIS/PHP veo el siguiente error en el archivo C: \ Windows \ Temp \ php-errors.log.

[15-Jun-2011 17:58:42] PHP Warning: PHP de inicio: No se puede cargar la biblioteca dinámica 'C: \ Archivos de programa (x86) \ PHP \ ext \ delphi_math.dll' - Error en la rutina de inicialización de una biblioteca de vínculos dinámicos (DLL) . en Desconocido en línea 0

ya he resuelto el problema inicial de PHP no encontrar mi extensión así que no es un problema de estilo de ruta.

Estoy pensando que php4Delphi 7.2 puede no ser compatible con el último PHP 5.3.6. ¿Alguien ha conseguido que esta configuración funcione para ellos?

Respuesta

6

PHP intenta cargar el módulo internamente y falla, tiene usted razón. El problema no está en la ruta de búsqueda, sino en el uso de la versión no segura de php con php4delphi. Cuando php carga una extensión, recibe la lista de algunas funciones de devolución de llamada de la extensión dll y la utiliza para comunicarse con dll. La lista de los parámetros de la función de devolución de llamada para versiones seguras de subprocesos y no subprocesos de php es diferente. php4delphi se hizo para el modelo seguro de subprocesos de php. Puede leer cuál es la diferencia entre las versiones de TS y NTS aquí: IIS Aid. En este caso particular, recomendaría cambiar el PHP no seguro para el hilo a PHP seguro, si es posible.

Si el uso de NTS PHP es un requisito, entonces el código fuente de php4delphi debe adaptarse y creo que en este caso se necesitan muchos cambios.

+0

Gracias por consultar este y el enlace sobre las versiones de TS/NTS. Tenía la impresión errónea de que el NTS era el paquete PHP tradicional y el TS el nuevo. Ahora que sé que lo tuve al revés, no habrá ningún problema para cambiar a la versión TS de PHP. – LachlanG

1

Acabo de hacer la prueba de php4delphi 7.2 con PHP 5.3.6, pero la versión segura para subprocesos y la extensión se cargaron como se esperaba. Creo que puede usar la versión de NTS solo si ejecuta el script utilizando php.exe desde la línea de comandos, no cuando usa IIS. De todos modos, haré la prueba con la versión de NTS también y le haré saber sobre el resultado.

0

Para mí, parece que PHP mismo (y no delphiphp) intenta cargar un módulo internamente y falla.

Podría ser que busque archivos DLL en la ruta a loadlibrary() pero encuentre archivos DLL de 64 bits en lugar de archivos DLL de 32 bits. Lo mejor es probar esta configuración en un sistema Windows de 32 bits.

P.s. la indicación del sistema de 64 bits que obtengo de "archivos de programa (x86)" obviamente

+0

Un problema de ruta fue mi primer problema; sin embargo, resolví eso agregando el directorio PHP \ ext a la ruta del sistema (y reiniciando). Sin embargo, este era un problema diferente.Gracias por tu tiempo de todos modos. – LachlanG

Cuestiones relacionadas