我知道这可能会迟到,但它帮助了我。大多数时候一个模块会导致 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;
}
我在上面的代码中添加了这 2 个打印语句,然后刷新页面,没有达到“完成加载 $module”语句的模块是有问题的模块......在我的情况下是开发的。
找到模块后,您可以进入系统表并查找该模块,将其设置为 status = 0 和 bootstrap = 0 或运行查询:
UPDATE system SET status = 0, bootstrap = 0 WHERE name = 'module_name' LIMIT 1