错误打开时没有错误

我在Drupal中打开了所有错误(error_reporting(-1)),但由于某些原因,大多数错误不会在日志或屏幕上显示。 我可以通过简单地将函数名更改为其他内容来复制问题,并且我期望看到函数不存在错误,但是我只是得到一个白色屏幕。 我已经尝试在Drupal框架之外进行复制,而且我不能 - 所以它让我相信这不是我的PHP(Zend Server / Apache2 / PHP / Windows)的设置,而是在Drupal的某处。

任何想法的人?


我知道这可能会很晚,但它对我有帮助。 大多数时候一个模块会导致WSOD,我不能仅仅禁用模块来测试它是什么,因为我可能在这个过程中丢失了数据。 我所做的是在module.inc中编辑这个函数

function module_invoke_all($hook) {
  $args = func_get_args();
  // Remove $hook from the arguments.
  unset($args[0]);
  $return = array();
  foreach (module_implements($hook) as $module) {

        print "Starting loading $module <br />";

        $function = $module . '_' . $hook;
        if (function_exists($function)) {
          $result = call_user_func_array($function, $args);
          if (isset($result) && is_array($result)) {
            $return = array_merge_recursive($return, $result);
          }
          elseif (isset($result)) {
            $return[] = $result;
          }
        }

        print "Finished loading $module <br />";

  }

  return $return;
}

我在上面的代码中添加了这两个打印语句,然后刷新页面,没有达到“完成加载$模块”语句的模块是有问题的模块......这是我的情况。

找到模块后,可以进入系统表并查找该模块,将其设置为status = 0并且bootstrap = 0或运行查询:

UPDATE system SET status = 0, bootstrap = 0 WHERE name = 'module_name' LIMIT 1

参考:调试Drupal白色死亡屏幕(WSOD)


您还需要确保已启用display_errors。

ini_set( 'display_errors', 'on' );

WSOD的完整文档。

链接地址: http://www.djcxy.com/p/69183.html

上一篇: No Errors with Errors turned ON

下一篇: How do I debug a PHP WSOD?