Help
Posted By Gregory

Предупреждение PHP: невозможно изменить информацию заголовка


English version: PHP Warning: Cannot modify header information


Предупреждение PHP: невозможно изменить информацию заголовка — заголовки уже отправлены…

Иногда вы можете увидеть это сообщение в журнале ошибок сервера или отобразить его на веб-странице. Это расстраивает и похоже, что что-то не так с PHP-скриптом, упомянутым в сообщении. Фактически это сообщение указывает на проблему (ошибку) в другом скрипте, плагине или теме. Вы можете получить это сообщение, если используете плагин с ошибками и включено отображение ошибок PHP , чего обычно быть не должно.

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

Независимо от того, пуст заголовок или нет, он должен быть отправлен перед любым содержимым страницы.

Если плагин WordPress с ошибкой генерирует предупреждение PHP до того, как другие плагины отправят заголовки в браузер, это приводит к ошибке сервера с сообщением «Предупреждение PHP: невозможно изменить информацию заголовка — заголовки уже отправлены…» .

Такое сообщение может ввести в заблуждение любого, поскольку в нем не указано, какой скрипт или плагин вызвал эту ошибку. Когда веб-сервер обнаруживает любой вывод, сгенерированный плагином, без отправленного заголовка, он автоматически создает заголовок и отправляет его в браузеры, поэтому все другие плагины, которые не ожидают такого поведения, не могут отправлять свои заголовки, если им это необходимо. .

Как решить эту проблему в контексте использования WP Cerber Security

  1. Отключите отображение ошибок в настройках PHP панели управления вашим хостингом. Если у вас нет доступа к настройкам PHP, обратитесь за помощью к своему хостинг-провайдеру.
  2. Отключите отображение ошибок PHP в настройках WP Cerber на странице администрирования Hardening.
  3. В основных настройках WP Cerber установите для параметра «Загрузить механизм безопасности» значение «Стандартный режим» или «Расширенный режим».
  4. Проверьте, определена ли константа WP_DEBUG в файле wp-config.php. Закомментируйте строку двойными косыми чертами // или просто удалите всю строку. Вот как это должно выглядеть:
    // define( 'WP_DEBUG', true );
    // define( 'WP_DEBUG', 1 );
  5. Добавьте следующие строки в начало файла wp-config.php:
    @ini_set( 'display_errors', 0 );
    @ini_set( 'log_errors', 1 );

Может ли WP Cerber или WordPress быть причиной проблемы?

Нет. Единственный код, который может вызвать эту проблему, — это устаревший/содержащий ошибки плагин или активная тема. Как найти первопричину? Проверьте журнал ошибок сервера. И пожалуйста избавьтесь от устаревших плагинов.


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.