Intentamos llevar una aplicación PHP 7.4 existente desde un servidor interno que se ejecuta en Windows Server 2012 a una aplicación web de Azure. La aplicación PHP usa OCI8 para conectarse a una base de datos Oracle. Todo (excepto la conexión a la base de datos) funciona bien sin la extensión OCI8 habilitada.
Seguimos la guía en https://docs.microsoft.com/en-us/archive/blogs/azureossds/access-oracle-databases-from-azure-web-apps-using-oci8-drivers-with-php como se recomienda en otras Preguntas de desbordamiento de pila, pero cada vez que la extensión OCI8 está habilitada, obtenemos errores HTTP 500 sin registro.
Los pasos que damos son:
extension=php_oci8 , todas tienen los mismos resultados).The page cannot be displayed because an internal server error has occurred.También intentamos usar los "Registros de App Service" en Azure App Service y habilitar Application Insights, pero tampoco hubo nada de interés (podíamos ver la respuesta HTTP 500 en los registros, pero no detalles sobre qué la causó) .
La sospecha es que PHP no se está iniciando, pero no estamos seguros de cómo rastrearlo cuando parece que no se registra nada.
En última instancia, eso lleva a que se trate de dos preguntas:
¡Gracias!
ACTUALIZACIÓN 2021-08-10
Resulta que este problema se debió a una incompatibilidad entre la extensión "Composer" de App Service y OCI8. Continuaré actualizando esta publicación con el progreso a medida que lo habilitemos, ya que asumo que otros también se encontrarán con esto en algún momento.
ACTUALIZACIÓN 2021-08-16
Solo como actualización final, terminamos con una versión anterior de Composer instalada (1.6.4). No probamos todas las otras versiones, pero si te encuentras con el mismo problema, la 1.6.4 al menos puede actuar como una línea de base sólida.
El repositorio de Azure Extension no parece especificar una versión, por lo que debería obtener la última, pero parece que solo se instala 1.8.5, por lo que podría haber un caché defectuoso en alguna parte. TL; DR: Si encuentra problemas, intente instalar manualmente Composer en lugar de usar la extensión.
Hice algunas búsquedas, esta parece una respuesta bastante sólida y más reciente:¿La aplicación web Azure PHP 7 tiene controladores de Oracle? .
Creo que probablemente tengas razón en que PHP no se está iniciando correctamente. Unas cuantas preguntas:
<?php phpinfo(); e intente acceder a él mientras ocurre el problema, ¿se carga el controlador oci8?Construí un laboratorio, me tomó un poco de trabajo, pero en realidad lo hice funcionar, por lo que parece. Podría construir un servidor Oracle y obtener algunos datos para demostrar que funciona:
Probablemente seguiría los pasos anteriores y estoy seguro de que se puede resolver. Probablemente le falte uno de estos pasos: