PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): [1] 2 3 4 5 »   

> Без описания
Champion Супермодератор
Отправлено: 15 Декабря, 2009 - 11:17:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




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

Итак, у на появилась такая вещь:
Cannot send session cookie - headers already sent by (output started at script1.php:1 [ * ]) in script2.php on line 2 [ ** ]
Нам сообщают, что заголовки уже были посланы и больше нельзя. Заголовки могут встречаться только один раз в начале документа.
Написано на какой строке в каком скрипте начался вывод в браузер(отмечано пушистой звездочкой) и на какой строке мы попытались послать заголовок (отмечено 2 пушистыми звездочками).

После вывода информации в браузар слать заголовки нельзя. Остается только осмыслить, что такое вывод в браузер. Да-да, если вы это читаете, то вы это не осмыслили.
* команды вывода php (echo, print...)
* различные warnigs, notices, которые произошли в результате других операций в скрипте.
* ЛЮБЫЕ СИМВОЛЫ, расположенные до <?php. Это и пробелы, и энтеры, и невидимый символ BOM.

Википедия про BOM пишет:
Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
UTF-32BE
00 00 FE FF
UTF-32LE
FF FE 00 00

Короче, скрипты, написанные в UTF-8 следует сохранять без BOM и во многих текстовых редакторах есть эта возможность. Всё.
 
 Top
Кирыч
Отправлено: 26 Января, 2011 - 21:11:10
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




СПАСИБО ОГРОМНОЕ Champion, У МЕНЯ И ПРАВДА ОКАЗАЛСЯ символ BOM.
тЫ НАСТОЯЩИЙ СПЕЦ...
 
 Top
maragon
Отправлено: 11 Февраля, 2011 - 12:02:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Все лечится notepad++ ом)
- Помнится долго маялся в поиске траблы.
В итоге просто надо было поискать в меню нотепада (UTF-8 без БОМ)!
 
 Top
kvins
Отправлено: 27 Февраля, 2011 - 09:56:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 195
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Champion ты забыл написать что такая же ошибка происходит с session start() ,header

у меня недавно была проблема как раз с header(LOCATION) эта функция у меня включалась аж в середине скрипта и иногда невозможно просто отделаться только вашим вариантом, зато мне подсказали что можно в php.ini включить output_buffering = on
и тогда скрипт вызывается где угодно
(Добавление)
maragon пишет:
Все лечится notepad++ ом)
- Помнится долго маялся в поиске траблы.
В итоге просто надо было поискать в меню нотепада (UTF-8 без БОМ)!


не согласен Радость если б все так просто было


-----
тута
 
 Top
ALEN
Отправлено: 27 Февраля, 2011 - 12:20:50
Post Id



Участник


Покинул форум
Сообщений всего: 1455
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 10 раз(а)




kvins
Все действительно просто, и новичкам противопоказано вообще использовать навороченные редакторы по PHP , в винде действительно лучше чем notepad2 (++) ничего не найти
 
 Top
kvins
Отправлено: 27 Февраля, 2011 - 13:38:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 195
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ну лечится же не notepad om а знаниями применнеными с помощью программы =)


-----
тута
 
 Top
CTAPbIu_KODEP
Отправлено: 28 Февраля, 2011 - 20:12:49
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Февр. 2011  
Откуда: Джанкой, Украина


Помог: 0 раз(а)




оооо. точно начало работать.. Радость
 
 Top
ALEN
Отправлено: 28 Февраля, 2011 - 20:51:17
Post Id



Участник


Покинул форум
Сообщений всего: 1455
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 10 раз(а)




kvins
Знания это да! Но в обычном блокноте кодировку не заменишь )))
 
 Top
Rocky
Отправлено: 03 Апреля, 2011 - 19:12:14
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Я новичок в программировании, сразу извините за оффтоп:

в процесе изучения php дошёл к функции setcookie()

в текстовом редакторе notepad++ набрал:
<?php
setcookie("test","test");
?>

результатом была ошыбка:Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\site\cookie.php:1) in Z:\home\localhost\www\site\cookie.php on line 2

попробовал все вышеперечисленные советы-не помогло Огорчение
 
 Top
Champion Супермодератор
Отправлено: 03 Апреля, 2011 - 19:14:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




не правда. Давай файл.
 
 Top
Rocky
Отправлено: 03 Апреля, 2011 - 20:31:59
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




фух разобрался Улыбка
инструкции для таких же чайников как я ,если у вас стоит notepad++:
1) если Вы только собераетесь писать код,перед тем как создать файл для роботы-жмем вкладку Опции-Настройки-Новый Документ выбираем UTF-8 без метки BOM.
2)если код уже написан - жмем вкладку Кодировки-Преобразовать в UTF-8 без BOM.
 
 Top
OrmaJever Модератор
Отправлено: 03 Апреля, 2011 - 20:46:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7538
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 298 раз(а)




Rocky это написано в первом посте. Нужно внимательнее читать!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Haron
Отправлено: 05 Апреля, 2011 - 18:25:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Я сталкивался с такой проблемой:
На Windows-серверах - всё нормально.
На *nix-серверах - вываливается этот самый Headers Already Sent

Проблему решил так:
- Перегнал все скрипты в utf-8 (без BOM)
- Затем удолил в конце скриптов символы ?>

Помогло.

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


-----
И чё?
 
 Top
IgVlGr
Отправлено: 05 Апреля, 2011 - 20:52:34
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




А почему нельзя так?!:

<?ob_start();

......всякая хрень...

ob_end_flush();
?>
 
 Top
rsd
Отправлено: 23 Апреля, 2011 - 13:36:35
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




спасибо за разъяснение .
такая же проблема с session_start();

гуглил и тоже нашел инфу про заголовки и пробелы после<?php

но про БОМ ничего не говорилось. сейчас перекодировал в ютф без бом и все ок сразу стало.


-----
С полной обоймой нести слово Божье куда проще! Помолись Богу и подай патроны!
 
 Top
Страниц (5): [1] 2 3 4 5 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB