Невозможно изменить информацию заголовка, уже отправленные заголовки

Возможный дубликат:
«Предупреждение: заголовки уже отправлены» в PHP

Я попытался использовать перенос xampp lite на моем флеш-накопителе, чтобы я мог принести сервер в любом месте. Но при использовании xampp я всегда получаю сообщение об ошибке. Эта ошибка, в частности:

Warning: Cannot modify header information - headers already sent by (output started at /path/to/geeklog/public_html/blabla.php:581) in /path/to/geeklog/public_html/system/lib-blablab.php on line 180 

Я не знаю, почему я получаю эту ошибку. Но когда я использую wampserver. Нет проблем. И я не получаю никаких ошибок. Что мне нужно сделать, чтобы решить эту проблему, когда я использую xampp. Есть ли переносная версия

Чтобы ваш уровень отчетности об ошибках был одинаковым в разных средах, вы можете установить его в своем приложении, используя error_reporting() и ini_set('display_errors', 1)

Также проверьте свои .php-файлы для любых пробелов перед открывающим тегом и после закрывающего тега.

В дополнение к указанным выше пунктам убедитесь, что вы не выдаете ничего перед установкой заголовков, например, следующий код приведет к ошибке, аналогичной той, которую вы получаете:

 echo 'Hello, World'; header('Location: http://www.somesite.com'); 

Возможно ли, что есть немного бит-бит пробелов вне тегов PHP в строке blabla.php 581? Держу пари, что есть.

Смотрите, если у вас есть что-либо за пределами PHP-тегов, которое отправляется в браузер. И как только что-то было отправлено в браузер, вы больше не можете отправлять заголовки (например, cookie sessionID!).

Проблема, скорее всего, не XAMPP, а ваш PHP-код, когда вы положили его на флешку.

Разница, которую вы видите между средами, почти наверняка является разницей в конфигурации.

Одна из двух вещей происходит на сервере, который не выделяет предупреждения:

1) Буферизация вывода включена по умолчанию

2) error_reporting и / или display_errors установлены так, что вы просто не видите предупреждения. Но если это так, ваши заголовки все равно не будут установлены, так что это, вероятно, № 1

Вы можете проверить эти параметры, просмотрев вывод phpinfo()

Буферизация вывода, когда включена, буферизует любой вывод (обычный контент не внутри тегов, все, что вы эхо или печатаете () и т. Д.) На сервере, а затем отправляет его клиенту одним выстрелом.

Я бы выкарабкался в вашей портативной версии, нашел php.ini и попытался включить буферизацию вывода. Кроме того, вы можете включить буферизацию вывода во время выполнения, придерживаясь ob_start() в верхней части вашего скрипта.

Ошибка указывает: output started at /path/to/geeklog/public_html/blabla.php:581 , поэтому я бы начал там. Вам нужно отправить все заголовки, прежде чем выводить что-либо, это включает пробелы, как упоминалось здесь другими.