Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема совместимости РНР
 
 автор: Саша   (18.10.2005 в 18:22)   письмо автору
 
 

Я очень часто в своей работе использую функцию header. На одном сервере скрипты работают нормально, а на другом выдает ошибку Cannot add header information - headers already sent by...
Меня интересует, это проблема настройки РНР? Если да, то как ее можно решить?

   
 
 автор: Akira   (18.10.2005 в 18:59)   письмо автору
 
   для: Саша   (18.10.2005 в 18:22)
 

Нет, это не проблема настройки php. Это фраза означает, что вы уже послали заголовок. Что ты вывели на экран. Или у вас перед тегом <? есть пустое место или пустая строка, а этого не должно быть.

   
 
 автор: cheops   (18.10.2005 в 21:23)   письмо автору
 
   для: Саша   (18.10.2005 в 18:22)
 

Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12
http://www.softtime.ru/forum/ead.php?id_forum=1&id_theme=147
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
В вашем случае такая буферизация скорее всего была включена в конфиграционном файле php.ini, но по умолчанию, да и на большинстве хостингов она отключена. Если вы имеете доступ к конфигурационному файлу php.ini вы можете включить её сново
output_buffering = On


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484

   
 
 автор: Саша   (19.10.2005 в 10:02)   письмо автору
 
   для: cheops   (18.10.2005 в 21:23)
 

Спасибо :-)
Но проблема в том, что на одном сервере все работает нормально, а на другом нет. Т. е. одни и те же скрипты работают по-разному на разных серверах... На одном никаких предупреждений о заголовках, а на другом выскакивает, что заголовок уже был послан! Почему такая не справедливость?:-)

   
 
 автор: multiBrain   (19.10.2005 в 10:56)   письмо автору
 
   для: Саша   (19.10.2005 в 10:02)
 

Может сообщение об ошибки не выводится потому что установлено подавление вывода ошибок?

   
 
 автор: Саша   (19.10.2005 в 12:17)   письмо автору
 
   для: multiBrain   (19.10.2005 в 10:56)
 

нет, ошибки выводяться, я смотрел...

   
 
 автор: cheops   (19.10.2005 в 14:14)   письмо автору
 
   для: Саша   (19.10.2005 в 10:02)
 

Да, на одном сервере включена директива output_buffering, а на другом нет... для переносимости следует всегда ориентироваться на выключенную директиву output_buffering.

   
 
 автор: Саша   (19.10.2005 в 14:31)   письмо автору
 
   для: cheops   (19.10.2005 в 14:14)
 

Спасибо, разобрался!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования