Проблема: Журнал ошибок блога Wordpress заполняется сообщениями «charset not поддерживается, при условии, что сообщения utf-8»;Увеличивается на 0 байт до 450 Мб за 24 часа (~ 28 тыс. просмотров страниц, если статистика верна).
Подробности: У меня есть блог на WordPress, размещенный на учетной записи общего хостинга.Он работал годами, и это никогда не было проблемой, пока не так давно, но я не могу точно определить точные временные рамки, когда это начало происходить.Несколько месяцев назад я начал превышать разрешенные ресурсы (в основном память), поэтому они переместили меня на другой сервер, и мне пришлось обновить учетную запись для более высокого использования разрешенных ресурсов.Старый сервер работал под управлением php5, а этот - под php7.Последние WP + около 15 популярных плагинов, все соответствующие версии.Тема древняя, она была там с самого начала.
Вчера я удалил журнал ошибок 9 ГБ (!) В корне сайта, сегодня, 24 часа спустя, его 500 МБ.Все строки похожи:
[datetime] PHP Warning: html_entity_decode(): charset `keep-ali0' not supported, assuming utf-8 in /home/accountname/public_html/wp-includes/formatting.php on line 5124
[datetime] PHP Warning: htmlentities(): charset `/[^0-9\.]/' not supported, assuming utf-8 in /home/accountname/public_html/wp-content/plugins/wp-super-cache/wp-cache-base.php on line 5
... etc.
Я проанализировал старый журнал размером 2 ГБ:
- они пришли из 13 файлов: 3 основных файла WP, другие из 6 различных плагинов
- только из этих функций:
htmlentities()
, htmlspecialchars()
, html_entity_decode()
- более 1000 уникальных "кодировок": все это мусор, большинство включает непечатаемые символы, другие просто странные вещи: пути (не мое!), регулярные выражения, целые числа, шестнадцатеричные значения ...:
#^[a-z]:[/\\]#i
, meta_value
, 0x7fe858ae2920
, /home/someone-elses-account-name/public_html/includes/functions.php
, ...
Откуда эти значения?
С чего начать устранение неполадок?
Редактировать: Решение
Ниже приведен отличный ответ с объяснением того, почему это происходит.К сожалению, находясь на виртуальном хостинге и используя сторонние приложения, я не мог найти обходных путей.Но после разговора с нашим хостинг-провайдером они добавили internal_encoding utf-8
в конфигурацию веб-сервера Apache через include config (что-то в этом роде).И это сработало.