12

我有一个以前在我的本地主机上完美运行的 Drupal 安装。但是,现在,在格式化我的计算机后,它只显示一个空白屏幕(全白)。

所以我的问题是,如果我什至无法登录服务器,我怎么能看到哪里出了问题?

我能找到的唯一错误是(取自 Apache 错误日志):

[Tue May 17 05:05:04 2011] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue May 17 05:05:04 2011] [notice] Digest: generating secret for digest authentication ...
[Tue May 17 05:05:04 2011] [notice] Digest: done
[Tue May 17 05:05:07 2011] [notice] Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 configured -- resuming normal operations
[Tue May 17 05:05:07 2011] [notice] Server built: Dec 10 2008 00:10:06
[Tue May 17 05:05:07 2011] [notice] Parent: Created child process 6992

看门狗没有错误...

我正在使用 Xamp 1.7.1 (PHP 5.2) 和 Drupal 6。

我还需要提一下,一旦我尝试在本地机器上加载站点,apache 也会崩溃!我添加了这个:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

它仍然只是显示死亡屏幕?我实际上在哪里可以看到错误?

我还在 apache access.log 中找到了这个:

127.0.0.1 - - [17/May/2011:05:22:14 +0200] "GET /greekmerchant/src/ HTTP/1.1" 200 3
127.0.0.1 - - [17/May/2011:05:25:45 +0200] "GET /greekmerchant/src/update.php HTTP/1.1" 302 -
127.0.0.1 - - [17/May/2011:05:25:46 +0200] "GET /greekmerchant/src/update.php?op=info HTTP/1.1" 200 -

...在尝试访问 update.php 之后。它也只是进入白屏。

我的 sql 配置文件中有这个:

[mysqld]
port= 3306
socket= "C:/xampp/mysql/mysql.sock"
basedir="C:/xampp/mysql" 
tmpdir="C:/xampp/tmp" 
datadir="C:/xampp/mysql/data"
skip-locking
key_buffer = 16M
max_allowed_packet = 128M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error="mysql_error.log"

和...

[mysqldump]
quick
max_allowed_packet = 128M

另外,我的 PHP 内存设置为 1024MB。

有人知道为什么这会死吗?真的是内存问题吗?我还能做些什么来向我显示错误?即使启用错误记录后,我仍然什么也看不到。

更新:

如果我删除文件夹,该网站将在我的本地计算机上运行。因此,由于某种原因,当它必须访问文件夹中的文件时,它会耗尽内存。为什么?或者更好的是,什么可能导致这种过度使用内存?

4

9 回答 9

13

Drupal 手册中有一整页专门用于调试“白屏死机”。简而言之,通过在 index.php 文件的顶部添加以下内容来启用错误报告:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

...并检查您已经开始执行的日志。在大多数情况下,这两个步骤往往会查明问题。如果这不能为您指明解决方案,请继续阅读手册页面,了解更多提示。

如果我不得不大胆猜测,我会说您的情况可能是内存不足错误。

于 2011-05-17T03:16:14.523 回答
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;
}

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

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

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

参考:调试 Drupal 白屏死机(WSOD)

于 2014-03-01T12:33:21.753 回答
1

检查 PHP 的错误报告设置。您可能需要启用错误报告。

这可能会有所帮助:http ://drupal.org/node/158043

于 2011-05-17T03:17:26.583 回答
1

在我的php.ini我修改了这些变量:

error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On 
display_startup_errors = On

执行:

sudo apachectl restart

摆脱我所有 Drupal 站点中的这些错误。

于 2012-09-24T08:58:09.767 回答
1

theme('page') 渲染的内容是空的,那肯定会给你一个 WOD。

使用来帮助您,它会发现一些与 WOD 相关的常见问题。

还可以尝试重建权限,最好的方法是使用 drush 并键入:

drush php-eval 'node_access_rebuild();'

也可以使用 drush 查看当前安装的模块,使用

drush sm

禁用所有自定义模块,然后搜索。

drush disable <modulename>

当你赶时间时,清除缓存:

drush cc

如果您认为 cron 是问题所在,那么我之前曾遇到过写得很糟糕的 cron 钩子的巨大问题,以防万一这是您的问题, supercron将成为您的朋友。

你应该有足够的内存,除非你有一些表现 非常糟糕的模块。

* 故障排除更新

如果在运行 update.php 时出现问题,请在文本编辑器中打开 update.php 并取消注释以下行:

ini_set('display_errors', FALSE);

有关其他 wsod 修复,请参阅此页面。值得注意的是,如果您使用 path-auto,则该页面上提到的修复值得一看。

于 2011-05-24T13:46:05.117 回答
1

假设它是 Linux 主机,如果您的主机运行的是 suPHP 或其他形式的 suexec,则可能是权限问题。确保文件的所有权正确,访问方式正确。

您可能还有一个无效的 .htaccess 文件,请尝试将其删除以进行测试。

于 2011-05-28T10:08:56.213 回答
1

我的建议是获取模块和主题文件夹的全部内容并将它们下载到您的桌面。这些主题和模块仍然安装,只是暂时禁用。如果您的网站回来了,那么很可能是模块或主题错误。也许有人错过了一个结束括号'}'。如果您确定模块或主题不是问题,则将它们放回文件夹中,不会有任何损失。试试这个并没有什么坏处,因为你不会失去任何东西。如果您发现这是一个模块问题,请开始将它们一一放回文件夹中,并一路刷新。一旦站点出现白屏,您就会发现问题,更新模块可能会有所帮助。

我总是先尝试这个,因为 drupal 安装非常可靠,它是您必须担心的模块和主题。

与此处的其他答案不同,这不会准确指出问题,但是如果您像我一样懒惰并且不想修改配置文件并打开错误,那么这就是要走的路,或者至少从这里开始然后去修改当一切都失败时配置。

于 2011-05-27T13:23:19.213 回答
0

有一个 WSOD,它不会告诉我出了什么问题。display_errors启用//后没有出现错误display_startup_errorserror_reportingPHP 错误日志中没有任何内容。服务器错误日志中没有任何内容。只需一个 WSOD 就可以了。

我最终设法诱使 Drupal 显示错误消息的方法是启用$update_free_access = FALSE;并导航到/update.php. 这表明没有待处理的更新,但在数据库中列出了一大堆错误,这是数据导入混乱的结果。

在此处输入图像描述

于 2014-09-20T17:25:22.303 回答
0

检查主题目录(目录或文件)的内容。

marinelli主题中缺少文件夹逻辑会导致此类问题。

于 2018-11-16T08:43:08.543 回答