PHP Warning: Cannot modify header information

Przy tworzeniu stron w php warto pamiętać o zadbaniu o odpowiednią kolejność działań. Takie funkcje jak header, setcookie i session_start oraz klasy generujące pliki np. TCPDF wymagają, aby przed ich wywołaniem nie została wyświetlona jakakolwiek treść, a zwłaszcza ďťż. Co prawda można zdać się na konfigurację serwera (output_buffering = On w php.ini) albo na funkcję ob_start, ale nie zawsze będą one skuteczne.

W razie pojawienia się tego komunikatu należy sprawdzić, w którym pliku i linii występuje wysłanie treści do przeglądarki. Dotyczy to spacji, pustych linii itd. Jeżeli w kodzie skryptu nie widać przyczyny, to warto upewnić się, że na początku pliku nie został umieszczony BOM. Objawia się on tym, że na samym początku strony pokazują się litery ďťż.

Sam BOM ma także wpływ na wyświetlanie się strony. W przypadku wordpressa może wystąpić pokazanie się dodatkowego marginesu u góry strony (firefox). W podglądzie kodu nie widać winnego, dopiero wyświetlenie treści przy pomocy firebuga pozwala zaobserwować niepożądane efekty. W przypadku plików dołączanych do nagłówka strony objawem jest przeniesienie elementów <script>, <style> itd. do sekcji <body>. Może to być część, mogą wszystkie, w zależności od tego, do którego pliku wkradł się znacznik BOM.

Jeśli dostępna jest konsola, to „zainfekowane” pliki można znaleźć przy pomocy grep.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*