[B]Ошибка возникает в php ниже версии 7.0
[/B]из-за кириллицы в параметрах вызова компонента
Спасибо автору, который навел на php_parser.php но этого мало оказалось.
[B]В файле bitrix\modules\main\classes\general\php_parser.php [/B]
в функции FindComponent
найти строки и заменить в ней функции substr на mb_substr
$nLineFrom = substr_count(substr($filesrc, 0, $arComponents[$i]["START"]), "\n") + 1;
$nLineTo = substr_count(substr($filesrc, 0, $arComponents[$i]["END"]), "\n") + 1;
получится
$nLineFrom = mb_substr_count(mb_substr($filesrc, 0, $arComponents[$i]["START"]), "\n") + 1;
$nLineTo = mb_substr_count(mb_substr($filesrc, 0, $arComponents[$i]["END"]), "\n") + 1;
тем самым в публичной части откроется компонент без ошибки.
[B]НО! если попытаться сохранить компонент из публичной части, то в файле откуда был вызван компонент он сохранит[/B][B]ся НЕ ПРАВИЛЬНО и будут ошибки![/B]
Нужно в файле bitrix\modules\main\public\component_props2.php
найти строку
$filesrc_for_save = substr($filesrc, 0, $arComponent["START"]).$code.substr($filesrc, $arComponent["END"]);
и заменить в ней функции substr на mb_substr
получится
$filesrc_for_save = mb_substr($filesrc, 0, $arComponent["START"]).$code.mb_substr($filesrc, $arComponent["END"]);
[/B]из-за кириллицы в параметрах вызова компонента
Спасибо автору, который навел на php_parser.php но этого мало оказалось.
[B]В файле bitrix\modules\main\classes\general\php_parser.php [/B]
в функции FindComponent
найти строки и заменить в ней функции substr на mb_substr
$nLineFrom = substr_count(substr($filesrc, 0, $arComponents[$i]["START"]), "\n") + 1;
$nLineTo = substr_count(substr($filesrc, 0, $arComponents[$i]["END"]), "\n") + 1;
получится
$nLineFrom = mb_substr_count(mb_substr($filesrc, 0, $arComponents[$i]["START"]), "\n") + 1;
$nLineTo = mb_substr_count(mb_substr($filesrc, 0, $arComponents[$i]["END"]), "\n") + 1;
тем самым в публичной части откроется компонент без ошибки.
[B]НО! если попытаться сохранить компонент из публичной части, то в файле откуда был вызван компонент он сохранит[/B][B]ся НЕ ПРАВИЛЬНО и будут ошибки![/B]
Нужно в файле bitrix\modules\main\public\component_props2.php
найти строку
$filesrc_for_save = substr($filesrc, 0, $arComponent["START"]).$code.substr($filesrc, $arComponent["END"]);
и заменить в ней функции substr на mb_substr
получится
$filesrc_for_save = mb_substr($filesrc, 0, $arComponent["START"]).$code.mb_substr($filesrc, $arComponent["END"]);