Отладка белого экрана смерти Drupal?

у меня есть установка Drupal, которая ранее отлично работала на моем localhost. Однако теперь, после форматированного моего компьютера, он просто показывает пустой экран (полностью белый).

единственные ошибки, которые я могу найти (взяты из журналов ошибок 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

в Watchdog нет ошибок...

я использую Xamp 1.7.1 (PHP 5.2) и друпал 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 -

... после попытки доступа к обновлению.РНР. Он также просто переходит на белый экран.

у меня есть это в моей конфигурации 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.

кто-нибудь знает, почему это просто умирает? Это действительно проблема с памятью? Что еще я могу сделать, чтобы ошибки показали мне? Я все еще ничего не вижу, даже после включения регистрации ошибок.

обновление:

веб-сайт запускается на моем локальном компьютере, если я удаляю папку с файлами. Таким образом, по какой-то причине, когда он должен получить доступ к файлам в папке files, он заканчивается памяти. Почему? Или еще лучше, что может быть причиной такого чрезмерного использования памяти?

8 ответов


в справочниках Drupal есть целая страница, посвященная отладке "белый экран смерти". В двух словах, включите отчеты об ошибках, добавив следующее в верхней части индекса.файл php:

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

...и проверьте журналы, которые вы уже начали делать. Эти два шага, как правило, указывают на проблему, большую часть времени. Если это не указывает на решение, перейдите на страницу руководства, чтобы получить больше советов.

Если бы мне пришлось возьмите дикую догадку, я бы сказал, что ваш случай, вероятно, является ошибкой из памяти.


Я знаю, что это может быть поздно, но это помогло мне. В большинстве случаев модуль вызывает WSOD, я не мог просто отключить модули, чтобы проверить, что это было, так как я, возможно, потерял данные в процессе. Что я сделал, так это отредактировал эту функцию в модуле.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 оператора печати в коде выше, а затем обновил страницу, модуль, который не достиг оператора "Finish loading $module", является тем, у кого проблема... в моем случае это был девел.

после нахождения модуль, вы можете войти в системную таблицу и искать этот модуль, установить его статус = 0 и bootstrap = 0 или запустить запрос:

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

ссылки: отладка Drupal белый экран смерти (WSOD)


проверьте настройки отчетов об ошибках для PHP. Возможно, потребуется включить отчет об ошибках.

Это может помочь: http://drupal.org/node/158043


содержимое темы ("страница") рендеринга пусто, и это, безусловно, даст вам WOD.

использовать этой чтобы помочь вам, он находит несколько общих проблем, связанных с WOD.

также попробуйте перестроить разрешения, лучший способ-использовать drush и введите:

drush php-eval 'node_access_rebuild();'

также используйте drush для просмотра установленных модулей, с

drush sm

отключите все пользовательские модули и выполните поиск.

drush disable <modulename>

и пока вы находитесь в drush, очистить кэш:

drush cc

если вы считаете, что cron-это проблема, у меня были огромные проблемы с плохо написанными крючками cron раньше, на всякий случай, если это ваша проблема,supercron будет вашим другом для этого.

у вас должно быть достаточно памяти, если у вас нет какого-то модуля, который ведет себя очень плохо.

* Устранение неполадок обновление

если проблема возникает при запуске обновления.php открыть обновление.РНР в текстовом редакторе раскомментируйте следующую строку:

ini_set('display_errors', FALSE);

посмотреть на этой странице для множества других исправлений wsod. В частности, если вы используете path-auto, исправление, упомянутое на этой странице, стоит посмотреть.


мой совет-взять все содержимое вашего модуля и папки темы и загрузить их на рабочий стол. Эти темы и модули по-прежнему установлены только временно отключены. Если ваш сайт возвращается, то это, скорее всего, ошибка модуля или темы. Возможно, кто-то пропустил конечную скобку '}'. Если вы уверены, что модули или темы не являются проблемой, поместите их обратно в папку без каких-либо потерь. Это не помешает попробовать, так как вы ничего не потеряете. Если вы узнаете, что это проблема модуля, начните размещать их один за другим обратно в папку, обновляя по пути. После того, как белые экраны сайта вы нашли свою проблему, и обновление модуля может помочь.

Я всегда пробую это сначала, так как установка drupal довольно прочная, это модули и темы, о которых вам нужно беспокоиться.

В отличие от других ответов здесь это не будет точно указывать на проблему, но если вы ленивы, как я, и не хотите изменять конфигурацию файлы и включить ошибки, то это путь, или, по крайней мере, начать здесь, а затем перейти и изменить конфигурации, когда все остальное не удается.


предполагая, что это хост Linux, это может быть проблема с разрешениями, если на вашем хосте работает suPHP или какая-либо другая форма suexec. Убедитесь, что права собственности на файлы и режим доступа являются правильными.

вы также может быть инвалид .файл htaccess, попробуйте удалить его, чтобы проверить это.


в своем php.ini Я изменил эти переменные:

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

выполнил:

sudo apachectl restart

избавиться от этих ошибок на всех моих сайтах Drupal.


был WSOD, который просто не сказал мне, что случилось. После включения /display_startup_errors/error_reporting. В журнале ошибок PHP ничего не было. В журнале ошибок сервера ничего не было. Просто WSOD и пойти выяснить.

способ, которым мне наконец удалось уговорить Drupal отображать сообщения об ошибках, состоял в том, чтобы включить $update_free_access = FALSE; и выберите /update.php. Это показало, что ожидающих обновлений нет, но перечислены целые кучу ошибок в базе данных, которые были результатом запутанного импорта данных.

enter image description here