Меню Рубрики

Установка mbstring internal encoding

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

Переношу сайт на готовый хостинг (предоставленный клиентом, так что выбирать не приходится), мне пишет ошибку:

Код

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

Хостинг поменять возможности нет, нужно выкрутиться на имеющемся, саппорт ничего менять не желает в настройках сервера.

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

попробуйте запустить скрипт тестирования хостнига битриксовый
и посмотрите error-логи php

Цитата
Дмитрий Степанов пишет:
В новых версиях PHP не поддерживается задание mbstring.func_overload через .htaccess, для этого надо править php.ini. Если хостинг этого не позволяет — увы, Битрикс не заработает.

Вы не совсем правы, если сайт работает в cp1251, то можно выставить mbstring.internal_encoding cp1251, и все будет работать корректно даже с mbstring.func_overload равным 2.

Дмитрий, речь шла о вашей фразе, что если изменить func_overload нельзя, то сайт работать не будет. Я ж написал, что если сайт в cp1251, то значение имеет только internal_encoding.

Если сайт в UTF-8, то тут так не выкрутится, оверлоад должен быть 2.

Цитата
Дмитрий Степанов пишет:
Кстати после применения mbstring.func_overload=2 на других проектах находящихся на том-же сервере и рассчитанных на 1251 возникают многочисленные проблемы с работой строковых функций. Так что будьте осторожны.

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

Хостинг не готов предоставить эти настройки ввиду большого кол-ва сайтов в разных кодировках.
Каков компромисс?

Доброе время суток!
Топик прочел — появился вопрос:
Правильно ли я понимаю, что для решения вопроса по сабжу существует всего 3 выхода:
1. Идеальный — съезжать с шаринг-хостинга.
2. Реальный — сбрасывать версию PHP до 5.1
3. Мистический — вести/конвертировать разработку в cp1251.

Цитата
1. Идеальный — съезжать с шаринг-хостинга.
2. Реальный — сбрасывать версию PHP до 5.1
3. Мистический — вести/конвертировать разработку в cp1251.

Уболтали — пойду потрачу 250 рублей, а мог бы 4 шавермы купить!

ТаймВеб, тариф 130 р/мес, прекрасно работает с utf-8 для php5.3. Если вдруг сервер не поддерживает такую версию php, пишите в поддержу ТаймВеба и вам переносят на сервер с готовым php5.3
Хоть на ТаймВеб есть жалобы, но преимущества перевешивают их недостатки (забюрокрачивание в последнее время)

Как раз на шаверму одну останется. Каждый месяц:)

Цитата
Алмаз Камалиев пишет:
Да я не к тому, что мне по душе другие cms-ки. Просто мне интересен тот факт, что для работы с utf никакой перегрузки не требуется в них

Не хочу вмешиваться в холивар, мне в общем всё равно.
Но от пруфлинка не откажусь — интересно посмотреть реализацию — может что-то для себя почерпну.

Цитата
Но от пруфлинка не откажусь — интересно посмотреть реализацию — может что-то для себя почерпну.

Ничего там хитрого в реализации нет, просто используют mb_* функции вместо обычных.

Цитата
Да я не к тому, что мне по душе другие cms-ки. Просто мне интересен тот факт, что для работы с utf никакой перегрузки не требуется в них

Перегрузка зам заменяет обычные функции, напр. strlen на mb_strlen.
Т.к. Битрикс имеет долгую историю, и начинал с РНР4, то есть множество мест с функциями без mb_*, переписать это все за 1 присест, а также проверить работу очень трудозатратно и рисковано. Намного эффективнее ввести требование к настройке сервера, которая сама все сделает «как надо».

Цитата
Mikhail Kryachek пишет:
Намного эффективнее ввести требование к настройке сервера, которая сама все сделает «как надо».

За счет покупателя? Хорошо, но перед покупкой этого творения красными буквами должно быть требование «индивидуальности» к веб хостингу.

Замучился и нашел выход прописал каждому хосту который на битриксе.

php_value default_charset utf8
php_admin_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf8
php_admin_value realpath_cache_size «4096k»

и все стало хоро и старые сайты работают и с битриксом нет проблем.

нашел одно решение:
при восстановлении, когда выскакивает сообщение

Цитата
Внимание! Сайт работал в кодировке UTF-8. Конфигурация сервера не соответствует требованиям, установите mbstring.func_overload=2 и mbstring.internal_encoding=UTF-8.

при условии, что архив уже распакован, надо зайти в редактирование файла /bitrix/php_interface/dbconn.php и закомментить строку

Цитата
define(«BX_UTF», true);

после успешной установки раскомментить ее обратно.

Важно. При восстановлении БД в этот файл дописываются данные доступа, поэтому на время восстановления надо его закрыть. или переоткрыть снова после восстановления.

источник

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

Цитата
Андрей Боровик написал:
нашел одно решение:
при восстановлении, когда выскакивает сообщение

Цитата
Внимание! Сайт работал в кодировке UTF-8. Конфигурация сервера не соответствует требованиям, установите mbstring.func_overload=2 и mbstring.internal_encoding=UTF-8.

при условии, что архив уже распакован, надо зайти в редактирование файла /bitrix/php_interface/dbconn.php и закомментить строку

Цитата
define(«BX_UTF», true);

после успешной установки раскомментить ее обратно.

Важно. При восстановлении БД в этот файл дописываются данные доступа, поэтому на время восстановления надо его закрыть. или переоткрыть снова после восстановления.

Спасибо огромное, Андрей

Параметры настройки UTF (mbstring и константа BX_UTF) :
Ошибка! Сайт работает в UTF кодировке, настройки mbstring:
mbstring.func_overload=0
mbstring.internal_encoding=
требуется:
mbstring.func_overload=2
mbstring.internal_encoding=utf-8
_____________________________
на самом деле все просто в /.htaccess:

#php_value mbstring.func_overload 2
#php_value mbstring.internal_encoding utf-8

строчки просто за комментированы, меняем на:

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf-8

Цитата
dianara86 написал:
Параметры настройки UTF (mbstring и константа BX_UTF) :
Ошибка! Сайт работает в UTF кодировке, настройки mbstring:
mbstring.func_overload=0
mbstring.internal_encoding=
требуется:
mbstring.func_overload=2
mbstring.internal_encoding=utf-8
_____________________________
на самом деле все просто в /.htaccess:

#php_value mbstring.func_overload 2
#php_value mbstring.internal_encoding utf-8

строчки просто за комментированы, меняем на:

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf-8

Динара, это под какой версией PHP?

Сегодня переносил битрикс на инфобокс, была аналогичная проблема.
Сразу хочу отметить, если php работает в режиме CGI, изменение в .htaccess ничего не даст, да и через директивы php_flag. Решение таково:
1. Необходимо создать в корне сайта php.ini с необходимыми параметрами.
2. В .htaccess прописать (если его нет создать) путь до директории сайта (путь абсолютный) » suPHP_ConfigPath /абсолютный путь до сайта «

Вопрос: если вместо

Код

у меня стоит

Код

будет ли корректно работать сайт в кодировке UTF-8? Или нет принципиальной разницы между «2» и «6»?

Цитата
Марат Димаев написал:
Цитата http://dev.1c-bitrix.ru/community/webdev/user/40749/ написал:
нашел одно решение:
при восстановлении, когда выскакивает сообщение
ЦитатаВнимание! Сайт работал в кодировке UTF-8. Конфигурация сервера не соответствует требованиям, установите mbstring.func_overload=2 и mbstring.internal_encoding=UTF-8.
при условии, что архив уже распакован, надо зайти в редактирование файла /bitrix/php_interface/dbconn.php и закомментить строку
Цитатаdefine(«BX_UTF», true);после успешной установки раскомментить ее обратно.

Важно. При восстановлении БД в этот файл дописываются данные доступа, поэтому на время восстановления надо его закрыть. или переоткрыть снова после восстановления.Спасибо огромное, http://dev.1c-bitrix.ru/community/webdev/user/40749/

Вот это реально работает

предлагаю всем пойти простым путём.
В момент установки в корневом каталоге, в файле .htaccess
Прописать 2 строчки, мне помогло на двух хостингах.

источник

Установка mbstring internal encoding

String literals in the PHP script are encoded with the same encoding that the PHP file was saved with. This is not affected by default_charset or other .ini settings.

Scenario: The default_charset is KOI8-R, and there is a text file «input.txt» containing the string «Это текст для поиска.» in KOI8-R encoding.

A PHP script is written:
// mb_internal_encoding(‘KOI8-R’);

$data = file_get_contents ( ‘input.txt’ );

echo mb_strpos ( $data , $string );

?>
But unfortunately it was saved as UTF-8.

It doesn’t work; mb_strpos() returns false because it can’t find the UTF-8-encoded «текст» inside the KOI8-R-encoded «Это текст для поиска.».

Adjusting the default_charset had no effect. Not even fiddling with mb_internal_encoding could fix it, simply because the strings involved had *different* encodings and without actually changing one of them they just weren’t going to match.

Either re-save the source file as KOI8-R to match the data file, or re-save the data file as UTF-8 to match the source code. Only then will the script properly echo ‘4’.

The documentation is vague, on WHAT precisely the valid «NLS» language strings are that are valid for «mbstring.language».

According to http://php.net/manual/en/function.mb-language.php the values are «Japanese», «ja», «English», «en», or «uni» for UTF-8.
On the other hand, the sample on this current page omits «uni» but introduces «Neutral» as an undocumented option — which is also the default value:

( mb_language () ); // «neutral» (default if not set)
var_dump ( mb_language ( ‘uni’ ) ); // TRUE, valid language string
var_dump ( mb_language () ); // «uni»
var_dump ( mb_language ( ‘neutral’ ) ); // TRUE, valid language string
var_dump ( mb_language () ); // «neutral»
?>

Note that you should better at least set «mbstring.internal_encoding».

echo mb_internal_encoding () . ‘
‘ ;
echo mb_regex_encoding ();

?>

You might be surprised at unexpected values.

mbstring.language Japanese
;mbstring.internal_encoding (commented out showing «no value» in phpinfo() )

These two lines in «php.ini» are the same values as

«mbstring.internal_encoding» defines the default encoding for «mb_» Functions such as «mb_strlen()».

It also defines the same for «mb_ereg_» Functions such as «mb_ereg()» when you don’t set «mb_regex_encoding».

источник

Ошибка! Сайт работает в UTF кодировке, настройки mbstring

Сайт работает отлично, но меня при проверке смущает вот эта ошибка.

Код

В .htaccess я не могу эти настройки задать, т.к. сайт работать не будет. К php.ini у меня доступа нет.

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

WhatsApp/Viber/Telegram: +79882410850, Skype — webdebug, почта info@webdebug.ru.

Цитата
Денис Сон написал:

Цитата
Михаил Рымар написал:
т.к. сайт работать не будет.

Это почему?

Потому что на хостинге PHP7, а эта настройка (как пишут другие) работает только на PHP5, причём на той версии PHP5, которую Битрикс уже не поддерживает.

Цитата
Михаил Рымар написал:
Потому что на хостинге PHP7, а эта настройка (как пишут другие) работает только на PHP5, причём на той версии PHP5, которую Битрикс уже не поддерживает.

Будет работать, если настроите нормально. Работает и на PHP5 и на PHP7.

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

WhatsApp/Viber/Telegram: +79882410850, Skype — webdebug, почта info@webdebug.ru.

Цитата
Денис Сон написал:

Цитата
Михаил Рымар написал:
Потому что на хостинге PHP7, а эта настройка (как пишут другие) работает только на PHP5, причём на той версии PHP5, которую Битрикс уже не поддерживает.

Будет работать, если настроите нормально. Работает и на PHP5 и на PHP7.

Работать будет если в php.ini прописать, а к нему у меня доступа нет. Если прописать в .htaccess , то сайт вообще работать не будет:
https://dev.1c-bitrix.ru/support/forum/forum6/topic31617/

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

WhatsApp/Viber/Telegram: +79882410850, Skype — webdebug, почта info@webdebug.ru.

Цитата
Денис Сон написал:
Т.е. вы даже не пробовали??
Какой хостинг?

Как вы могли подумать, что я мог не попробовать) Да я как только не пробовал!
Хостинг — Таймвеб.

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

WhatsApp/Viber/Telegram: +79882410850, Skype — webdebug, почта info@webdebug.ru.

Цитата
Денис Сон написал:

Цитата
Михаил Рымар написал:
Хостинг — Таймвеб.

На Таймвебе это делается как раз в .htaccess, даже для PHP7.

Если вы уверены в своих словах, то, думаю, вам не составит труда подсказать мне куда вставить пару строк кода?

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

WhatsApp/Viber/Telegram: +79882410850, Skype — webdebug, почта info@webdebug.ru.

Цитата
Андрей Николаев написал:
данные директивы из .htaccess не задаются (больше).

Да, спасибо, именно это я и пытался объяснить Денису.

Цитата
Михаил Рымар написал:
Да, спасибо, именно это я и пытался объяснить Денису.

Т.е. вы опять не проверили? Что за боязнь проверить? Без этого вы не убедитесь что то, о чем я говорю — работает.

Проверил только что на реальном проекте наТаймвебе, php 7.1.20.

Какие-то еще доказательства нужны?

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

WhatsApp/Viber/Telegram: +79882410850, Skype — webdebug, почта info@webdebug.ru.

Цитата
Денис Сон написал:
Какие-то еще доказательства нужны?

Эта фича работает ТОЛЬКО на таймвебе
На BitrixVM и других — не работает))

Цитата
Андрей Николаев написал:
Эта фича работает ТОЛЬКО на таймвебе

Так о чем и речь, если Михаил говорит что это Таймвеб я потому и отвечаю что нужно в .htaccess редактировать. Техподдержка всегда туда всех посылает. Года три назад спрашивал, как так, почему у них это возможно — ответили что у них установлен патч для PHP, поэтому так.

Конечно, на других хостингах, или даже на Timeweb VDS это нужно делать либо через панель хостинга, если такая возможность предоставлена, либо через конфиг в виртуальном хосте. Через php.ini я бы не стал редактировать, особенно если сайтов более одного.

Но в любом случае от правильного конфига в .htaccess, даже если он не работает, сайт не перестает работать как пишет Михаил.

Беслатно отвечу на любые вопросы по Битриксу. Задать вопрос .

Оперативно исправлю любые ошибки на Вашем сайте.

источник

Читайте также:  Установка переднего стеклоподъемника приора

Популярные записи