1

当我故意从php 过滤器模块的嵌入式 php 代码中抛出一个 php 错误时,Drupal 会显示该消息The website encountered an unexpected error. Please try again later.

我们喜欢将出现意外程序员错误的用户发送到错误处理页面,这样他们就不会在没有我们得到通知的情况下登陆死错误页面,所以我试图找出如何在 Drupal 中拦截它。我尝试在 Drupal 中搜索此错误字符串的输出位置,但没有成功。

Drupal 究竟如何处理嵌入式 php 代码中发生的错误,或者更直接地:如何让它重定向到另一个页面或以另一种方式捕获错误?

谢谢

4

1 回答 1

0

该特定错误是 Drupal 将 PHP 异常处理程序显式设置为自定义函数(在 中完成_drupal_bootstrap_configuration())的结果。

异常处理程序本身是_drupal_exception_handler(),它调用_drupal_log_error(),这就是生成错误页面的地方。

我从未尝试过,但我认为您可以通过实现hook_boot()和使用set_exception_handler()来提供您自己的核心 Drupal 功能实现,以不同的方式为错误页面设置主题。

这似乎有点漫长,但由于_drupal_error_log()没有调用任何钩子(无论如何它可能发生得太早了),如果不编辑核心文件,我看不到任何其他方法。

于 2013-03-05T23:27:36.297 回答