当PHP失败时,Apache会退回

时间:2008-09-15 09:16:31

标签: php apache configuration

我想知道是否有人知道一种方法来配置apache以回退到返回静态HTML页面,它是否(Apache)能够确定PHP已经死亡?这将为开发人员提供显示错误页面的优雅解决方案,而不是(最糟糕的情况)应该执行的PHP页面的源代码。

感谢。

4 个答案:

答案 0 :(得分:8)

只有在没有正确配置apache来处理php文件时才会显示PHP源代码。也就是说,当尚未定义适当的处理程序时。

在出错时,可以在php.ini上配置显示的内容,主要是display_errors变量。应该在生产环境中将其设置为off并将log_errors设置为on。

如果php真的死了,apache将使用ErrorDocument指令定义的页面返回相应的HTTP状态代码(通常为500)。如果它没有消亡,但却陷入了困境,那么就我所知,你所能做的并不多。

您可以为不同的错误代码指定不同的页面。

答案 1 :(得分:3)

我认为这通常会导致500错误,您可以配置apaches 500 handler来显示静态页面:

ErrorDocument 500 /500error.html

您还可以在apaches documentation site

上阅读有关错误处理程序的信息

答案 2 :(得分:1)

真正的问题是PHP致命错误不会导致Apache返回500代码。您可以使用set_error_handler()处理E_FATALE_PARSE以外的错误。

答案 3 :(得分:0)

有两种方法可以使用PHP和Apache。

1. Install PHP as an Apache module: this way the PHP execution is a thread inside the apache process. So if PHP execution fails, then Apache process fails too. there is no fallback strategy.

2. Install PHP as a CGI script handler: this way Apache will start a new PHP process for each request. If the PHP execution fails, then Apache will know that, and there might be a way to handle the error.

无论您安装PHP的方式如何,当PHP执行失败时,您都可以处理php.ini文件中的错误。