我想知道是否有人知道一种方法来配置apache以回退到返回静态HTML页面,它是否(Apache)能够确定PHP已经死亡?这将为开发人员提供显示错误页面的优雅解决方案,而不是(最糟糕的情况)应该执行的PHP页面的源代码。
感谢。
答案 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
上阅读有关错误处理程序的信息答案 2 :(得分:1)
真正的问题是PHP致命错误不会导致Apache返回500代码。您可以使用set_error_handler()
处理E_FATAL
和E_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
文件中的错误。