Centrum pomocy

    Mam błąd "headers already sent". Co robić?

    Na czym polega ten błąd?


    Zazwyczaj wynika on z tego, że przed wysłaniem nagłówków (funkcja header(); w PHP), mamy już jakąś treść którą wysyłamy do przeglądarki. Może być to HTML, jakikolwiek tekst ale również znak którego nie widzimy np. spacja czy znak nowej linii (ogólnie BOM).

    Analiza problemu


    Lokalizację problemu wskazuje nam PHP gdy mamy włączone wyświetlanie błędów. Przykładowy komunikat wygląda tak:

    Warning: Cannot modify header information - headers already sent by (output started at /home/user/public_html/plik.php:10) in /home/user/public_html/index.php on line 16


    Na powyższym przykładzie można stwierdzić, że w linii 16 pliku index.php znajdującym się w public_html nie udało się wysłać nagłówka. Zaś linia 10 w plik.php wskazuje na to gdzie może być źródło problemu.

    Rozwiązanie problemu


    1. Usuń tekst oraz HTML, który znajduje się przed wysłaniem jakiegoś nagłówka.
    2. Upewnij się, że plik PHP nie ma żadnych spacji oraz innych znaków przed tagiem "<?php" oraz po tagu "?>". Jeśli istnieją usuń je.
    3. Możesz także, za pomocą edytora (np. Notepad++) zaznaczyć cały tekst w pliku i zmienić jego format na UTF-8 bez BOM. Następnie zapisz ten plik i wrzuć ponownie na hosting www.


    Po zastosowaniu się do powyższych poleceń problem powinien zniknąć.

    Więcej informacji na ten temat można znaleźć pod adresami:

    http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php?answertab=votes#tab-top
    http://phpedia.pl/wiki/Cannot_add_header_information_-_headers_already_sent