Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ob_start() i błąd headers already sent
Forum PHP.pl > Forum > PHP
johnnyno
Witam,

mam dziwny błąd. Są dwa skrypty php:

test.php:
  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. require_once('header1.inc.php');
  6.  
  7.  
  8. ?>

oraz plik header1.inc.php:
  1. <?php
  2. ?>

Kiedy odpalam w przeglądarce test.php otrzymuję błąd:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at header1.inc.php:1) in test.php on line 8

Plik header1.inc.php nie ma żadnej treści bo sprawdzałem nawet w notatniku, więc dlaczego jakaś treść niby została wysłana w tym pliku w lini 1 (output started at header1.inc.php:1) blinksmiley.gif sad.gif

Jeżeli wywołam funkcję ob_start() w pliku test.php przed require_once:
  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5.  
  6. require_once('header1.inc.php');
  7.  
  8.  
  9. ?>

wtedy wszystko działa sadsmiley02.gif
kasiunia
ob musi byc wlaczane w plikach nadrzednych, nie mozna wlaczac go w plikach includowanych
johnnyno
Ale na innym serwerze to działało wcześniej. Dopiero po przeniesieniu softu na inny hosting sie posypało.
Może ma to związek z ustawieniami sesji na serwerze, bo u mnie lokalnie na kompie mogę wysłać jakąś treść przed session_start():

  1. <?php
  2. echo 'xxxxx';
  3. ?>

i wszystko dziala.
kosheen2k
Drogi kolego, podczas przenoszenia na inny serwer mógł zostać zmieniony nagłówek pliku... najlepiej to ściągnij sobie programik pod tytułem Notepad++ otwórz plik header1.inc.php sprawdź jaki ma kodowanie znaków - w prawym dolnym rogu będzie napisane jakie kodowanie znaków masz, jeśli coś jest zwalone z headerami to może być właśnie to, jeśli coś odezwij się do mnie na mój numer gg i pomogę.


Pozdrawiam.
szagi3891
ob_start nie koniecznie musi być w pliku głównym. Ja stosuje ją z powodzeniem w pliku konfiguracyjnym który jest dołąnczany do głównych plików poszczególnych podstron i wszystko działa poprawnie. Prawdopodobnie jak kolega zauważył wcześniej znajdują się jakieś dane wysyłane do przeglądarki przed funkcją ob_start
johnnyno
Wielkie dzieki! Cały czas używałem Notepad++ ale nie wiedzialem ze to może byc problem z kodowaniem. Tym bardziej że jak otwieralem kod header1.inc.php w zwyklym notatniku to zadnych podejrzanych znaków nie było.
Ale działa. Jeszcze raz dzieki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.