Виправляємо помилку headers already sent by

267

Від автора: у цьому уроці ми розглянемо, мабуть, одне з найбільш поширених помилок, з якою стикаються при програмуванні на PHP. Ця помилка виникає при роботі з функціями, пов’язаними з відправкою заголовків. При цьому ми можемо зіткнутися з декількома варіантами повідомлень про помилку, але причина у них буде однакова – заголовки вже відправлені (headers already sent).

Виправляємо помилку headers already sent byВиправляємо помилку headers already sent by

У відео версії уроку ви знайдете докладний опис варіантів виникнення цієї помилки. Тут же ми сформулюємо коротко причини і способи вирішення даної помилки.

Отже, ця помилка може виникнути у випадках, коли в коді ви використовуєте одну з функцій, пов’язаних з відправленням заголовків: header(), session_start(), setcookie().

Причина помилки полягає в тому, що перед цими функціями в коді десь є висновок в браузер. При цьому висновком в браузер вважається будь-який символ, навіть пробіл або перенесення рядка, які можна побачити у вихідному коді.

Відповідно, рішення проблеми полягає в тому, що цей висновок треба прибрати. Варіанти виводу можуть бути наступними:

власне висновок, який прописаний в коді: це може бути пробіл, перенесення рядка, HTML-код і т. д.

висновок у файлах, що підключаються

збереження документа у кодуванні UTF-8 з BOM. Це найбільш неочевидна проблема і тут варто пам’ятати, що при використанні юнікоду файл має бути збережений у кодуванні UTF-8 без BOM.

На цьому ми завершимо поточний урок. Удачі і до нових зустрічей!