Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports

#
Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in file C:\OSPanel\domains\hostcms\hostcmsfiles\lib\lib_55\lib_config_55.php (line 30)
HostCMS
Модератор
#
Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
bmpvoltamd,
в lib это ошибка от макета, уточните что за страница и какой стандартный макет использован.
#
Re: Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
Использован макет Корпорация, уже сам исправил $guid = Core_Array::getGet('download_file'; на $guid = strip_tags(Core_Array::getGet('download_file' ?? '';
#
Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
В выбранном шаблоне (адаптивный шаблон, мужик в сомбреро с банджо на главной странице, более 1000 установок) после синхронизации с 1с не подгружаются цены товаров, ошибка Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated в файле /var/www/tehselle/data/www/xn--e1aaaxa5acg2a.xn--p1ai/templates/template35/template.htm (строка 104) На хостинге PHP модуль Apache 8.3.6 (native)
Что это и как исправить
Модератор
#
Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
klaviator,
открыть шаблон и выяснить что у вас в 104 строке 35 макета
#
Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
$aOpenGraph['ogescription'] = strip_tags(Core_Str::cutSentences($oEntity->description));
вот что написано в этой строке
в интернете нашел описание бага:
Эта ошибка возникает из-за перехода на PHP 8.1+, где функция strip_tags() больше не принимает null в качестве аргумента. В файле /var/www/tehselle/data/www/xn--e1aaaxa5acg2a.xn--p1ai/templates/template35/template.htm на 104 строке переменная, передаваемая в функцию, пуста (null), а должна быть строкой.
Как исправить (на 104 строке template.htm):
Вариант 1: Использовать оператор объединения с null (??)Замените переменную внутри strip_tags() на саму себя с добавлением ?? ''. Это преобразует null в пустую строку.
Вариант 2: Принудительное приведение типаПриведите переменную к строке, используя (string).
Почему это происходит:PHP 8.1+ стал строже к типам данных. Раньше null молча преобразовывался в пустую строку, теперь это вызывает предупреждение Deprecated.

Проблема в интернете описана верно и попробовать сделать как в интернете советуют, или дело в другом?
Модератор
#
Re: Поддержка PHP 8.1, 8.2, 8.3 и 8.4, bug reports
замените $oEntity->description на (string) $oEntity->description и проблема будет решена.
Авторизация