Drupal White Screen of Death - Нет ошибок с включенными ошибками - PullRequest
3 голосов
/ 11 марта 2011

У меня все ошибки включены (error_reporting (-1)) в Drupal, но по некоторым причинам большинство ошибок не появляются в журналах или на экране.Я могу воспроизвести проблему, просто изменив имя функции на что-то другое, и я ожидаю, что у функции не будет ошибки, но я просто получу белый экран.Я пытался реплицировать это вне фреймворка Drupal, и я не могу - поэтому это наводит меня на мысль, что это не моя установка PHP (Zend Server / Apache2 / PHP / Windows), а где-то в Drupal ...

Есть идеи у кого-нибудь?

Ответы [ 8 ]

4 голосов
/ 01 марта 2014

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

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

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

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

3 голосов
/ 11 марта 2011

Необходимо убедиться, что display_errors также включено.

ini_set( 'display_errors', 'on' );
2 голосов
/ 12 марта 2011
1 голос
/ 11 марта 2011

это может быть самый глупый ответ на stackoverflow, но это случилось со мной, когда я проектировал сайт CakePHP с нуля и имел белый фон и белый шрифт в css, и не мог получить ничего, никаких ошибок или дамп sql.

посмотрите, можете ли вы выбрать текст на экране.

0 голосов
/ 14 апреля 2014

Я отмечаю, что на ваш вопрос уже был дан ответ, но другим, читающим это, может быть полезно знать, что иногда WSOD может быть вызван более старой несовместимой версией PHP на сервере. Drupal 7 требует PHP 5.3, но многие серверы все еще работают на PHP 5.2. Это может вызвать WSOD без сообщений об ошибках.

0 голосов
/ 24 марта 2011

Я начал включать / отключать модули, чтобы увидеть, когда снова смогу видеть ошибки, и ограничил его двумя модулями, которые отключали обработку ошибок ... После дополнительного исследования я обнаружил, что в классе nusoap.php была включена отчетность об ошибках. отключено, потому что некоторые ошибки продолжали отображаться (какой-то другой разработчик отключил его) ... включил его, обновил nusoap.php и теперь все работает ... Спасибо за помощь всем

0 голосов
/ 12 марта 2011

Иногда я получаю странные ошибки, включая WSOD, если я включаю файл с закрывающим токеном php. ?>

Мне потребовалось целую вечность, чтобы выследить.

0 голосов
/ 11 марта 2011

Проверьте настройку php для "error_reporting", может быть? Шахта установлена ​​на:

error_reporting = E_ALL & ~ E_DEPRECATED

...