Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Проблема с mbstring.func_overload=2 и mbstring.internal_encoding=UTF-8

00 голосов
6
Переношу сайт на готовый хостинг (предоставленный клиентом, так что выбирать не приходится), мне пишет ошибку:
Код
Внимание! Сайт работал в кодировке UTF-8. Конфигурация сервера не соответствует требованиям, установите mbstring.func_overload=2 и mbstring.internal_encoding=UTF-8.


Прописал в .htaccess

Код
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8


Но дает 500 ошибку (php работает не через mod_php5.c).
Может у кого есть решение проблемы?

Хостинг поменять возможности нет, нужно выкрутиться на имеющемся, саппорт ничего менять не желает в настройках сервера.
спросил 04 Сен, 13 от Shyrko (120 баллов)

6 Ответы

00 голосов
Цитата
Но дает 500 ошибку (php работает не через mod_php5.c)

попробуйте запустить скрипт тестирования хостнига битриксовый
и посмотрите error-логи php
ответил 04 Сен, 13 от ledyNEXUS (420 баллов)
00 голосов
В новых версиях PHP не поддерживается задание mbstring.func_overload через .htaccess, для этого надо править php.ini. Если хостинг этого не позволяет - увы, Битрикс не заработает.
Причина - в банальной лени разработчиков, которые перешли на utf-8 но не поменяли однобайтовые строковые функции на соответствующие мультибайтовые с префиксом mb_. Кстати после применения mbstring.func_overload=2 на других проектах находящихся на том-же сервере и рассчитанных на 1251 возникают многочисленные проблемы с работой строковых функций. Так что будьте осторожны.
ответил 27 Ноя, 13 от KHOnKA (160 баллов)
00 голосов
Цитата
Дмитрий Степанов пишет:
В новых версиях PHP не поддерживается задание mbstring.func_overload через .htaccess, для этого надо править php.ini. Если хостинг этого не позволяет - увы, Битрикс не заработает.


Вы не совсем правы, если сайт работает в cp1251, то можно выставить mbstring.internal_encoding cp1251, и все будет работать корректно даже с mbstring.func_overload равным 2.
ответил 09 Март, 14 от Nael (220 баллов)
00 голосов
Как это может помочь если сайт на Bitrix работает в UTF-8 а ещё энцать сайтов на том-же хостинге работают в 1251?
ответил 29 Июнь, 14 от KHOnKA (160 баллов)
00 голосов
Дмитрий, речь шла о вашей фразе, что если изменить func_overload нельзя, то сайт работать не будет. Я ж написал, что если сайт в cp1251, то значение имеет только internal_encoding.

Если сайт в UTF-8, то тут так не выкрутится, оверлоад должен быть 2.
ответил 30 Окт, 14 от Nael (220 баллов)
00 голосов
Цитата
Дмитрий Степанов пишет:
Кстати после применения mbstring.func_overload=2 на других проектах находящихся на том-же сервере и рассчитанных на 1251 возникают многочисленные проблемы с работой строковых функций. Так что будьте осторожны.


Исходные данные - пользователю нужны:
mbstring.func_overload 2
mbstring.internal_encoding UTF-8

Хостинг не готов предоставить эти настройки ввиду большого кол-ва сайтов в разных кодировках.
Каков компромисс?
ответил 27 Фев, 15 от Exumer (360 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 02 Янв, 14 от Nadejda (180 баллов)
0 голосов
5 ответов
спросил 16 Ноя, 13 от StRanger (340 баллов)
0 голосов
3 ответов
спросил 13 Март, 14 от hencok (180 баллов)
0 голосов
4 ответов
спросил 11 Янв, 14 от Ashihei (100 баллов)