Как отключить сообщение "заголовок уже отправлен" на Linux, Cpanel? - PullRequest
0 голосов
/ 12 января 2010

Я строю свои сайты на локальном хосте (запускает wamp на windows), и когда я загружаю их на свой сервер, я всегда получаю «Невозможно изменить информацию заголовка - заголовки уже отправлены»

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

Я использую cpanel и WHM:

cPanel 11.25.0-R42399 - WHM 11.25.0 - X 3.9 CENTOS 5.4 x86_64 virtuozzo на vps

Буду признателен за любую помощь

Ответы [ 3 ]

2 голосов
/ 12 января 2010

Короче говоря, вам нужно запретить PHP выводить что-либо в браузер, прежде чем вы доберетесь до точки, где вы хотите использовать функцию header ().

Это должно быть сделано с помощью осторожных методов программирования,что у вас «нет пустых строк», или сохраните выходные данные PHP в выходном буфере и выведите их только тогда, когда вы готовы к этому.

См. ob_start () и ob_flush () методы.Вы используете ob_start () в начале вашего приложения.Это отключает вывод и сохраняет его в буфере.Когда вы будете готовы начать вывод, используйте ob_flush (), и PHP отправит содержимое буфера в браузер, включая заголовки, которые установлены до этой точки.Если вы не вызываете ob_flush (), то буфер выводится (сбрасывается) в конце скрипта.

Причина, по которой он работает в вашей среде разработки WAMP, скорее всего заключается в том, что буферизация вывода уже включенапо умолчанию в php.ini.Довольно часто эти пакеты «все в одном» включают буфер по умолчанию для первых 4 байтов или около того.Однако, как правило, лучше явно запускать и очищать буфер в вашем коде, так как это требует лучших методов кодирования.

0 голосов
/ 22 марта 2011

@ user31279: Самый быстрый и самый грязный способ, который я знаю, это использовать @ для подавления предупреждения, например,

@header('Location: some-other-page.php');
0 голосов
/ 12 января 2010

Ну, Я полагаю, что если подумать и лучше программировать, вам удастся сохранить все перенаправления до того, как будет написан какой-либо HTML.

Эта проблема решена по старым правилам ...

...