Від автора: у цьому уроці ми розглянемо, мабуть, одне з найбільш поширених помилок, з якою стикаються при програмуванні на PHP. Ця помилка виникає при роботі з функціями, пов’язаними з відправкою заголовків. При цьому ми можемо зіткнутися з декількома варіантами повідомлень про помилку, але причина у них буде однакова – заголовки вже відправлені (headers already sent).
У відео версії уроку ви знайдете докладний опис варіантів виникнення цієї помилки. Тут же ми сформулюємо коротко причини і способи вирішення даної помилки.
Отже, ця помилка може виникнути у випадках, коли в коді ви використовуєте одну з функцій, пов’язаних з відправленням заголовків: header(), session_start(), setcookie().
Причина помилки полягає в тому, що перед цими функціями в коді десь є висновок в браузер. При цьому висновком в браузер вважається будь-який символ, навіть пробіл або перенесення рядка, які можна побачити у вихідному коді.
Відповідно, рішення проблеми полягає в тому, що цей висновок треба прибрати. Варіанти виводу можуть бути наступними:
власне висновок, який прописаний в коді: це може бути пробіл, перенесення рядка, HTML-код і т. д.
висновок у файлах, що підключаються
збереження документа у кодуванні UTF-8 з BOM. Це найбільш неочевидна проблема і тут варто пам’ятати, що при використанні юнікоду файл має бути збережений у кодуванні UTF-8 без BOM.
На цьому ми завершимо поточний урок. Удачі і до нових зустрічей!