当我故意在 php过滤器模块中的嵌入式php代码中抛出php错误时,Drupal会显示消息The website encountered an unexpected error. Please try again later.
我们希望将具有意外程序员错误的用户发送到错误处理页面,这样他们就不会在没有得到通知的情况下登陆死错页面,所以我试图找出如何在Drupal中拦截它。我已经尝试在Drupal中搜索输出此错误字符串的位置,但没有运气。
Drupal究竟如何处理嵌入式php代码中发生的错误,或更直接地处理错误:如何将其重定向到另一个页面或以其他方式捕获错误?
由于
答案 0 :(得分:0)
由于Drupal将PHP异常处理程序显式设置为自定义函数(在_drupal_bootstrap_configuration()
中完成),因此出现了特定错误。
异常处理程序本身是_drupal_exception_handler()
,它调用_drupal_log_error()
,这就是生成错误页面的地方。
我从来没有尝试过,但我认为你可以实现hook_boot()
并使用set_exception_handler()
来提供自己的核心Drupal函数实现,以便以不同的方式对错误页面进行主题化。 / p>
这可能看起来有点长,但是因为_drupal_error_log()
没有调用任何钩子(无论如何它可能发生得太早)我没有看到任何其他方法来做到这一点而没有编辑核心文件。