header ("location") вызывает [500] внутреннюю ошибку сервера? - PullRequest
1 голос
/ 01 марта 2010

Я не могу понять, что может быть причиной этой ошибки. Мой журнал Apache не записывает каких-либо ошибок в журнале доступа или журнале ошибок, связанных со страницей, и все же, когда я раскомментирую строку header(), я получаю 500 Internal Server Error. Это не может произойти из-за фатальной ошибки PHP, когда содержимое выводится до вызова header(), что не вызовет 500, не так ли?

header("Location: /offices/page-".ceil($cache->size() / 15));

Я протестировал $cache->size(), и он возвращает 22, поэтому он должен добавить 2 в конец строки и перенаправить. Мне звонили ob_start() до header(), но я пытался позвонить ob_end_clean() прямо перед этим, и он все равно ничего не делал ...

Я даже пытался поместить header("Location: /offices"); в самом начале файла, и он все еще дает мне 500.

Ответы [ 4 ]

3 голосов
/ 01 марта 2010

Сценарий продолжает выполняться после вашего вызова header (). Вам нужно поставить exit; сразу после него. Это не должно вызывать ошибку 500.

Редактировать: Очевидно, это сработало - значит, ваша проблема, вероятно, в каком-то связанном коде, расположенном ниже на странице?

2 голосов
/ 01 марта 2010

Попробуйте использовать полностью сформированный URL:

header("Location: http://{$_SERVER['HTTP_HOST']}/offices/page-".ceil($cache->size() / 15));
1 голос
/ 04 ноября 2018

Другая причина может быть - вам нужно удалить пробел после location:

header("location :
header("location:

Если это не ваша проблема, попробуйте проверить журналы ошибок php & apache .

0 голосов
/ 09 июня 2015

У меня было то же самое. После неоднократного удара головой о монитор это не заголовок («Location: myPage.php»); ломаная строка - это myPage.php ломаная! Попробуйте перенаправить на другую страницу. Надеюсь, я сэкономлю чужое время

...