2011-07-14 16 views
8

Tengo directivas apache configuradas para documentos de error personalizados para 404, 403, etc., así como 500. Sin embargo, PHP, al encontrar un error fatal, muestra una página en blanco en lugar de desencadenar la respuesta apache 500.¿Cómo hago para que PHP muestre la página de error 500 de Apache cuando encuentra un error, en lugar de una página en blanco?

No necesito mostrar los detalles del error ni nada de eso, ya que actualmente están registrados correctamente en apache error_logs, así que no creo que tenga nada que ver con error_reporting o display_errors, los cuales están configurados correctamente.

Aquí hay algunas preguntas similares en SO, pero no he encontrado una respuesta que haga lo que necesito. Básicamente, en el caso de algo así como un error de sintaxis, quiero ver la página de error apache 500, NO una página en blanco. Esto no es algo que pueda capturarse y manejarse en PHP, ya que los errores de sintaxis no son detectables.

Esto parece haber sido parcheado/fija en PHP 5.2.4, como se ve aquí: http://www.mail-archive.com/[email protected]/msg28557.html

Sin embargo, estamos usando PHP 5.2.17, y una actualización no es factible en este momento. ¿Alguien tiene alguna solución/solución alternativa que pueda funcionar para desencadenar 500 errores en apache por cualquier sintaxis/error fatal de PHP?

+0

PHP 5.2.17 fue lanzado * después de * PHP 5.2.4. ¿Has revisado tu php.ini? –

+0

Hmm no, tbh no lo he hecho. ¿Sabes qué opción en php.ini controla esto? –

+0

@KevinJhangiani, ¿encontró alguna solución? –

Respuesta

1

No estoy seguro si esto funciona: registre shutdown handler y visualice la página adecuada. Se debe llamar al controlador de apagado siempre que ocurra un error fatal. Asegúrese de registrar el controlador en la parte superior de su script.

+0

Eso funcionará para muchas situaciones, y es la solución que con mayor frecuencia pude encontrar, sin embargo, no funcionará para los errores de sintaxis (y otros errores no detectables) ya que el código no se ejecuta en absoluto. Estoy buscando una forma de hacer que php se comporte de manera similar a perl, java, etc., y sirva un error apropiado de apache 500, en lugar de un php desencadenado. –

Cuestiones relacionadas