fin - php</ php
Apache retrocede cuando PHP falla (4)
El código fuente de PHP solo se muestra cuando apache no está configurado correctamente para manejar archivos php. Es decir, cuando no se ha definido un controlador adecuado.
En los errores, lo que se muestra se puede configurar en php.ini, principalmente la variable display_errors. Debe estar desactivado y log_errors activado en un entorno de producción.
Si php realmente muere, apache devolverá el código de estado HTTP apropiado (generalmente 500) con la página definida por la directiva ErrorDocument. Si no murió, sino que se atascó en un bucle, no hay mucho que puedas hacer hasta donde yo sé.
Puede especificar una página diferente para diferentes códigos de error.
Me preguntaba si alguien sabía de un método para configurar apache para que volviera a devolver una página HTML estática, ¿debería (Apache) ser capaz de determinar que PHP ha muerto? Esto proporcionaría al desarrollador una solución elegante para mostrar una página de error y no (en el peor de los casos) el código fuente de la página PHP que debería haberse ejecutado.
Gracias.
Hay 2 maneras de usar PHP y apache. 1. Instalar PHP como un módulo de Apache: de esta manera la ejecución de PHP es un hilo dentro del proceso de apache. entonces si la ejecución de php falla, el proceso de Apache falla. no hay una estrategia de repliegue. 2. Instale PHP como manejador de scripts CGI: de esta forma, apache iniciará un nuevo proceso PHP para cada solicitud. Si la ejecución de PHP falla, apache lo sabrá y podría haber una forma de manejar el error. Independientemente de la forma en que instale PHP, cuando falla la ejecución de PHP, puede manejar errores en el archivo php.ini.
Supongo que esto normalmente produce un error de 500, y puede configurar el controlador apaches 500 para mostrar una página estática:
ErrorDocument 500 /500error.html
También puede leer sobre los manejadores de errores en el sitio de documentación de apaches
El verdadero problema es que los errores fatales PHP no hacen que Apache devuelva un código 500. Los errores a excepción de E_FATAL
y E_PARSE
pueden manejarse como set_error_handler()
usar set_error_handler()
.