Warning: Cannot modify header information

Ошибка возникающая при создании нового поста в WordPress, во время отправки её на публикацию.

Если в файле конфигураций wp-config.php включено показ ошибок:

Тогда будет показана ошибка, в ином случае страница при сохранении поста (записи) будет пустой.

Ошибка выглядит так:

Warning: Cannot modify header information — headers already sent by (output started at /wp-includes/author-template.php:73) in /wp-admin/post.php on line 197

Warning: Cannot modify header information — headers already sent by (output started at /wp-includes/author-template.php:73) in /wp-includes/pluggable.php on line 1210

Мне известны следующие случаи этой ошибки в WordPress.

1. Причина в плагине

Один из плагинов устарел и вызывает ошибку. Так, например, у меня не так давно вызывал ошибку плагин Email Subscribers & Newsletters. Когда автор обновил свой плагин и ошибка исчезла.

2. Файл wp-config

Если в конце файла настроек WordPress (wp-config.php) имеется лишняя строка. Одна строка допустима, две нет. Также ошибка может вызываться, если добавлены какие-то свои данные в конец этого файла. Там где написано, «дальше не редактируем», не следует ничего добавлять:

Ошибка с лишней отбитой строчкой также возникает и в файлах, которые подключаются из functions.php с помощью:

Ошибка точно возникнет, если в таком файле, в самом конце его содержимого будет две лишние строки после закрывающего тега php:

Например, при таком окончании файла будет вызываться ошибка, при сохранении записи:

Для того чтобы обезопасить себя от ошибок, в конце файла, где в основном содержится php код рекомендовано не ставить закрывающий тег php. В документации по PHP, в том или ином варианте, об этом сказано аж несколько раз:

Если файл содержит только код PHP, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавления случайных символов пробела или перевода строки после закрывающего тега PHP, которые могут послужить причиной нежелательных эффектов, так как PHP начинает выводить данные в буфер при отсутствии намерения у программиста выводить какие-либо данные в этой точке скрипта.

Закрывающий тег PHP-блока в конце файла не является обязательным, и в некоторых случаях его опускание довольно полезно, например, при использовании include или require, так, что нежелательные пробелы не останутся в конце файла и вы все еще сможете добавить http-заголовки после подключения к ответу сервера. Это также удобно при использовании буферизации вывода, где также нежелательно иметь пробелы в конце частей ответа, сгенерированного подключаемыми файлами.

Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании одиночного PHP/HTML файла.

English Query (запросы по теме на английском языке)

Warning: Cannot modify header information - headers already

WordPress Warning when create a post

Publish a new article problems

Error when created a new post

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Warning: Cannot modify header information".

Ваш e-mail не будет опубликован. Обязательные поля помечены *