Однажды понадобилось прикрутить к Битриксу библиотечку phpExcel чтобы парсить excel, загружаемый администратором и генерировать отчеты для юзеров. Казалось бы, дело не хитрое. Но Битрикс работает с флагом mbstring.func_overload=2 Утрировано: этот флаг для ленивых разрабов, которым не хочется переписывать старый код для поддержки Юникода (да-да, php нативно не поддерживал Юникод, поэтому для работы с Unicode строками придумали новые названия функций). Конечно же, ни одна адекватная библиотека не будет с этим флагом работать по причине непредвиденных ошибок - обычно внутри библиотеки производится проверка значения и сразу выбрасывается ошибка. Переопределить этот флаг для конкретного скрипта с помощью ini_set не представлялось возможным. Официальный ответ представителя Битрикс на форуме: зайдите в код подключаемой библиотеки и закомментируйте строки с проверкой значения флага. Финиш. Перевожу для тех, кто не понял. Битрикс - это сомнительного качества оболочка снаружи, и старый как говно мамонта код внутри, который был написан лет 15-20 назад. Так не программируют очень и очень давно. И разработчикам тупо лень переписать это старьё под современные стандарты, поэтому любая интеграция будет неминуемо сталкиваться с глюками и проблемами. Чтобы справиться с этим, нужны крепкие нервы, поэтому разработчики на Битрикс хотят много денег за свою работу, хотя из уровень не выше фрилансеров из 2007 года.
Однажды понадобилось прикрутить к Битриксу библиотечку phpExcel чтобы парсить excel, загружаемый администратором и генерировать отчеты для юзеров.
Казалось бы, дело не хитрое. Но Битрикс работает с флагом mbstring.func_overload=2
Утрировано: этот флаг для ленивых разрабов, которым не хочется переписывать старый код для поддержки Юникода (да-да, php нативно не поддерживал Юникод, поэтому для работы с Unicode строками придумали новые названия функций).
Конечно же, ни одна адекватная библиотека не будет с этим флагом работать по причине непредвиденных ошибок - обычно внутри библиотеки производится проверка значения и сразу выбрасывается ошибка. Переопределить этот флаг для конкретного скрипта с помощью ini_set не представлялось возможным.
Официальный ответ представителя Битрикс на форуме: зайдите в код подключаемой библиотеки и закомментируйте строки с проверкой значения флага. Финиш.
Перевожу для тех, кто не понял. Битрикс - это сомнительного качества оболочка снаружи, и старый как говно мамонта код внутри, который был написан лет 15-20 назад. Так не программируют очень и очень давно. И разработчикам тупо лень переписать это старьё под современные стандарты, поэтому любая интеграция будет неминуемо сталкиваться с глюками и проблемами.
Чтобы справиться с этим, нужны крепкие нервы, поэтому разработчики на Битрикс хотят много денег за свою работу, хотя из уровень не выше фрилансеров из 2007 года.
Нет этого флага и проблемы уже несколько лет, обновитесь
Изолировать вызов скрипта через exec() и закинуть в беклог задачу по выкидыванию битрикса :)