Подтвердить что ты не робот

Отладка 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) и 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 установлена ​​на 1024 МБ.

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

Update:

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Я знаю, что это может быть поздно, но это помогло мне. В большинстве случаев модуль вызывает 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;
}

И я добавил эти два оператора печати в приведенный выше код, а затем обновил страницу, модуль, который не дошел до инструкции "Finish loading $module", является тем, у кого проблема... это было в моем случае.

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

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

Ссылка: Отладка Drupal White Screen of Death (WSOD)

Ответ 3

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

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

Ответ 4

Содержимое темы ('page') рендеринга пуст, и это наверняка даст вам WOD.

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

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

drush php-eval 'node_access_rebuild();'

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

drush sm

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

drush disable <modulename>

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

drush cc

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

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

* Обновление устранения неполадок

Если проблема возникает при запуске update.php, откройте update.php в текстовом редакторе и раскомментируйте следующую строку:

ini_set('display_errors', FALSE);

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

В моем php.ini я изменил эти переменные:

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

Выполненная:

sudo apachectl restart

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

Ответ 8

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

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

enter image description here