2010-07-13 3 views
0

Можно создать дубликат:
“Warning: Headers already sent” in PHPНе удается изменить информацию заголовка, заголовки уже отправлены

Я попытался с помощью XAMPP Облегченная портативная в моем флэш-диск, чтобы я мог привести сервер в любом месте. Но я всегда получаю сообщение об ошибке при использовании 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. Есть ли переносная версия wamp

+1

Изменен заголовок и теги, потому что он не имеет никакого отношения к XAMPP, строгому вопросу о PHP. – animuson

ответ

3

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

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

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

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

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

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

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

1

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

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

Output buffering 1) включена по умолчанию

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

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

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

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

0

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

Смежные вопросы