Ошибка возникающая при создании нового поста в WordPress, во время отправки её на публикацию.
Если в файле конфигураций wp-config.php включено показ ошибок:
Тогда будет показана ошибка, в ином случае страница при сохранении поста (записи) будет пустой.
Ошибка выглядит так:
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 файла.
upstream sent too big header while reading response header
Похожая ошибка
2019/09/18 23:19:36 [error] 1600#1600: *4691 upstream sent too big header while reading response header from upstream, client: 111.111.111.111, server: , request: «POST /wp-admin/admin-ajax.php HTTP/1.1», upstream: «https://111.111.111.111:8423/wp-admin/admin-ajax.php», host: «», referrer: «/wp-admin/post.php»
На странице наблюдаем ошибку 500 (Internal Server Error)
Если включить дебаг, то на странице редактирования и на всех других будут ошибки, которые приводят к таким последствиям.
Например, это могут делать устарелые функции:
Deprecated: Array and string offset access syntax with curly braces is deprecated in /wp-includes/script-loader.php on line 757
Deprecated: Array and string offset access syntax with curly braces is deprecated in /wp-includes/script-loader.php on line 758
Попробуйте поменять версию PHP или убрать отжившие функции в новой версии.