Предупреждение PHP: невозможно изменить информацию заголовка
English version: PHP Warning: Cannot modify header information
Предупреждение PHP: Невозможно изменить информацию заголовка – заголовки уже отправлены …
Иногда вы можете увидеть это сообщение в журнале ошибок сервера или увидеть его на веб-странице. Это раздражает и выглядит так, будто что-то не так с PHP-скриптом, упомянутым в сообщении. На самом деле, это сообщение указывает на проблему (ошибку) в другом скрипте, плагине или теме. Вы можете получить это сообщение, если используете глючный плагин и отображение ошибок PHP включено, чего обычно быть не должно.
Это сообщение появляется, когда часть кода PHP на веб-сайте генерирует вывод, который обычно является предупреждающим сообщением PHP, которое вообще не должно отправляться и отображаться в браузере пользователя. И этот вывод отправляется до того, как заголовок веб-страницы генерируется и отправляется в браузер пользователя. Заголовок веб-страницы может быть пустым или может обрабатывать дополнительную информацию, такую как файлы cookie.
Независимо от того, является ли заголовок пустым или нет, он должен быть отправлен перед любым содержимым страницы.
Если неисправный плагин WordPress генерирует предупреждение PHP до того, как другие плагины отправят заголовки в браузер, это приводит к ошибке сервера с сообщением «Предупреждение PHP: Невозможно изменить информацию заголовка – заголовки уже отправлены …» .
Такое сообщение может ввести в заблуждение любого, поскольку оно не сообщает, какой скрипт или плагин вызвал эту ошибку. Когда веб-сервер обнаруживает любой вывод, сгенерированный плагином без отправленного заголовка, он автоматически создает заголовок и отправляет его браузерам, поэтому все другие плагины, которые не ожидают такого поведения, не могут отправить свои заголовки, если им это нужно.
Как решить эту проблему в контексте использования WP Cerber Security
- Отключите отображение ошибок в настройках PHP панели управления хостингом. Если у вас нет доступа к настройкам PHP, обратитесь за помощью к своему хостинг-провайдеру.
- Отключите отображение ошибок PHP в настройках WP Cerber на странице администрирования Hardening.
- В основных настройках WP Cerber установите для параметра «Загрузка модуля безопасности» значение «Стандартный режим» или «Расширенный режим».
- Проверьте, определена ли константа WP_DEBUG в файле wp-config.php. Закомментируйте строку двойными слешами // или просто удалите всю строку. Вот как это должно выглядеть:
// define( 'WP_DEBUG', true );
// define( 'WP_DEBUG', 1 ); - Добавьте следующие строки в начало файла wp-config.php:
@ini_set( 'display_errors', 0 );
@ini_set( 'log_errors', 1 );
Может ли WP Cerber или WordPress быть причиной проблемы?
Нет. Единственный код, который может вызвать эту проблему, — это либо устаревший/глючный плагин, либо активная тема. Как найти первопричину? Проверьте журнал ошибок сервера. И, пожалуйста, избавьтесь от устаревших плагинов.