Белый экран вместо редиректа — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Часто возникает ситуация, когда при выполнении редиректа с помощью метода системы '''redirect($…»)
 
 
Строка 14: Строка 14:
  
 
'127.0.0.1' – тут укажите IP-адрес вашего компьютера. При выполнении метода redirect, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке.
 
'127.0.0.1' – тут укажите IP-адрес вашего компьютера. При выполнении метода redirect, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке.
 +
 +
[[Категория: API]]

Текущая версия на 04:52, 29 ноября 2011

Часто возникает ситуация, когда при выполнении редиректа с помощью метода системы 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, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке.