Рано или поздно каждый разработчик drupal сталкивается с этим: переход по ссылке или нажатие кнопки – и белая страница. Без контента. Без ошибок. Ничего. Что делать, если непонятно, что делать?

Часто, но не всегда, белый экран (wsod) становится результатом установки нового модуля, внесения изменений в код модуля или темы или обновления ядра Друпал или модулей Друпал.

В ситуации с белым экраном drupal после внесения изменений в код все ясно: требуется проверить новый код или откатить код до состояния, когда все работало.

Белый экран WSOD и PHP error_reporting

Если error_reporting установлен в 0, можно успешно получать PHP Fatal Error(s), но не видеть их. В то же время, для рабочих копий сайтов под нагрузкой установка error_reporting в 0 – это нормальная практика.

Выход из ситуации: установить error_reporting в 1 или проверить серверные логи.

Если у Вас свой сервер, ситуация разрешается просто: читаем логи, правим php.ini (или конфиг апача), перезапускаем сервисы и наслаждаемся сообщениями об ошибках. С коммерческими хостингами сложнее: не каждый даст читать syslog, error_log домена, устанавливать свои правила в php.ini и править конфиг апача.

Из этой ситуации есть выход. Можно открыть settings.php домена (/sites/default/settings.php по умолчанию) и дописать в него в самом конце следующий код:

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

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

Пробелы в конце PHP файла после закрывающих скобок

Вообще говоря, закрывающие скобки в PHP-файлах ( ?> ) совершенно необязательны. Более того, рекомендации по программированию под Drupal содержат прямое требование никогда не использовать данную конструкцию в конце файла.

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