Перенаправление заголовка PHP не работает на производстве, пустая страница - PullRequest
0 голосов
/ 05 июня 2011

Я собираюсь бросить полотенце. Может кто-нибудь помочь мне понять это. На моем локальном dev-сервере этот кусочек PHP работает нормально, он просто выполняет перенаправление, создавая URL из некоторых переменных. Поэтому я перенаправлен на эту страницу, как и ожидалось.

$status = "0"; //unsubscribed
header('Location:http://www.skandium.com/manage-your-mailing-list.asp?status='.$status);
die();

На рабочем сервере я просто получаю пустую страницу. Я знаю, что сама страница PHP работает, потому что все остальное, что происходит до и до этой строки, работает нормально. Я могу заменить эту строку простой echo и увидеть, что URL-адрес также правильный.

Другие детали:

  • Размещается на коробке с Windows (dev также windows)
  • та же версия PHP, запущенная через FASTCGI

РЕДАКТИРОВАТЬ: сюжет утолщается

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

<?php 

//test.php

//prevent page caching
header("Cache-Control: no-cache"); 
header("Expires: -1");

$status = "0"; //unsubscribed

header('Location:http://www.abc.com/manage-your-mailing-list.php?status='.$status);
die();

?>

Ответы [ 5 ]

3 голосов
/ 05 июня 2011

Убедитесь, что перед тегом php нет пробелов

1 голос
/ 07 июня 2011

Несколько вещей, которые вы можете попробовать:

  • Проверьте, если headers_sent() равно true перед отправкой заголовка перенаправления
  • Установите error_reporting(E_ALL) и ini_set('display_errors', 1)
  • Используйте firebug для проверки того, какие (если есть) заголовки отправляются в браузер
1 голос
/ 07 июня 2011

Попробуйте это ..

header('Location: http://www.abc.com/manage-your-mailing-list.php?status='.$status)

Я просто добавляю пробел между двоеточием (:) и URL .. Я не знаю, что это случилось с другими, но иногда такие вещи случались со мной, и иногда это работает по каким-то причинам ..

Кроме того, вы пробовали относительный путь? или на других страницах, я имею в виду, "местоположение заголовка" работает в других местах? или это происходит только по этому сценарию?

0 голосов
/ 22 октября 2011

Ничего из этого не сработало.

В итоге я повторил перенаправление meta.

Я мог бы также повторить JavaScript location.replace

0 голосов
/ 05 июня 2011

Кодируется ли файл UTF-8? Любой вывод может помешать выполнению кода, включая спецификацию. Возможно, кодировка не была задана явно, но ваша машина разработки приняла UTF-8 (и проигнорировала метку), в то время как ваш рабочий сервер этого не сделал.

...