По-работе пришлось исправлять странный баг. Суть была такова: есть некий сайт, работает он на bitrix’е. Сайт крутится на сервере под управлением centOS. В одном из разделов сайта залит форумный движок SMF — типичный такой форум, без особых наворотов.
Так вот работал себе этот форумный движок на этом сервере много лет, а тут что-то произошло и появились странные баги:
- Обрезались title у страницы
- Обрезались названия тем
- Обрезались сами тексты топиков
В общем заказчик негодует. Надо исправлять. Много версий было выдвинуто, много кода просмотрено, и вот какой вывод был сделан: движок активно использует функцию htmlspecialchars — для преобразования некоторых символов в html-сущности (например кавычки и т.д.). Только вот использует он её не обычную, а модифицированную:
$smcFunc['htmlspecialchars'] ();
Модифицирована она разработчиками SMF, и вот что они про неё пишут: функция похожа на функцию htmlspecialchars (имеется ввиду стандартную), однако она дополнительно проверяет аргументы на кодировку, и делает ещё некоторые вещи.
Как решили проблему:
Ищем данную функцию в файлике Post.php, что находится по адресу: /Sources/Post.php
Ищем там ~1024 строчку, и вот в этом месте:
Меняет на то, что на скриншоте 🙂 Т.е. заменяем кастомизированную функцию на обычную, PHP-ую.
Тоже самое делаем приблизительно в 1615-1617 строках:
Сохраняем, загружаем на сервер и проверяем.
В моём случае работы была восстановлена и заголовки с сообщениями перестали обрезаться. По догадкам и логическим суждениям, проблема была в том, что кастомизированная функция вызывала функции, которые не поддерживались новой версией PHP, которую накатили на сервере.
Ошибка была найдена с горой матов, техдиром, который сидел рядом и испускал эту гору матов и чей-то матери.
P.S.: Заменять всё сразу — не советую. Мы попробовали — форум упал к чертям. Помогла замена исключительно в данных местах.