我在Drupal中打开了所有错误(error_reporting(-1)),但由于某些原因,大多数错误都没有在日志或屏幕上显示。我可以通过简单地将函数名称更改为其他内容来复制问题,我希望看到函数不存在错误,但我只是得到一个白色屏幕。我试过在Drupal框架之外复制它,但我不能 - 因此它让我相信它不是我的PHP设置(Zend Server / Apache2 / PHP / Windows),而是在Drupal的某个地方...
任何想法?
答案 0 :(得分:4)
我知道这可能会迟到,但它对我很有帮助。大多数时候模块会导致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;
}
我在上面的代码中添加了那两个打印语句,然后刷新页面,没有到达“Finish loading $ module”语句的模块是有问题的那个...它在我的案例中开发了
找到模块后,您可以进入系统表并查找该模块,设置它的status = 0和bootstrap = 0或运行查询:
UPDATE system SET status = 0, bootstrap = 0 WHERE name = 'module_name' LIMIT 1
答案 1 :(得分:3)
您还需要确保display_errors已启用。
ini_set( 'display_errors', 'on' );
答案 2 :(得分:2)
答案 3 :(得分:1)
这可能是stackoverflow上最愚蠢的答案,但当我从头开始设计一个cakephp网站并且在css中有白色背景和白色字体时,这发生在我身上,并且无法获得任何内容,没有错误或sql转储。
看看您是否可以在屏幕上选择文字。
答案 4 :(得分:0)
检查php的“error_reporting”设置,也许吧?我的设定为:
error_reporting = E_ALL&amp; 〜E_DEPRECATED
答案 5 :(得分:0)
有时,如果我包含一个具有关闭php令牌的文件,我会得到包括WSOD在内的奇怪错误。
?>
我花了很长时间才追查。
答案 6 :(得分:0)
我开始启用/禁用模块以查看何时可以再次看到错误并将其限制为两个关闭错误处理的模块...经过更多调查后我发现在nusoap.php类中错误报告已被转换关闭,因为某些错误一直显示(其他一些开发人员已将其关闭)...重新启用它,升级nusoap.php,现在一切正常...感谢所有人的帮助
答案 7 :(得分:0)
我注意到您的问题已经得到了解答,但是对于其他人来说,这可能是有用的,因为有时WSOD可能是由服务器上较旧的不兼容版本的PHP引起的。 Drupal 7需要PHP 5.3,但许多服务器仍在运行PHP 5.2。这可能导致WSOD没有错误消息。