Белый экран вместо редиректа

Материал из Umicms
Версия от 04:51, 29 ноября 2011; VITL' (обсуждение | вклад) (Новая страница: «Часто возникает ситуация, когда при выполнении редиректа с помощью метода системы '''redirect($…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Часто возникает ситуация, когда при выполнении редиректа с помощью метода системы redirect($url), класс def_module, в браузере появляется белый экран, а FireBug показывает в "Ответе" время генерации страницы:

<!-- This page generated in 0.152338 secs -->   

В данном случае, скорее всего проблема в том, что где-то в кастомном php-файле, или tpl-шаблоне, или еще где-то поставлен лишний перенос строки, и в текущий буфер отправляются какие-то данные, из-за этого не могут записаться заголовки для редиректа и он в итоге не происходит. Для отслеживания в каком файле проблема, можно воспользоваться php-методом headers_sent. В файле classes/modules/def_module.php, в методе redirect, в начале метода можно поставить такие строки:

if($_SERVER['REMOTE_ADDR'] == '127.0.0.1'){
  if (headers_sent($filename, $linenum)) {
      echo "Заголовки уже отправлены в $filename на строке $linenum. Редирект невозможен.";
      exit;
  }
}

'127.0.0.1' – тут укажите IP-адрес вашего компьютера. При выполнении метода redirect, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке.