В ближайшем будущем система обновлений заблокирует установку новых обновлений, если настройки вашего сервера не удовлетворяют техническим требованиям:
-
Должно быть установлено расширение PHP mbstring.
-
Параметр
default_charset
в php.ini должен быть заполнен. -
Параметр
mbstring.internal_encoding
в php.ini должен быть пустым. Вместо него необходимо использовать параметрdefault_charset
. -
Если установка работает в кодировке UTF-8, то параметр
default_charset
и результат вызоваmb_internal_encoding()
должны быть равныUTF-8
. -
Если установка работает не в кодировке UTF-8, то параметр
default_charset
и результат вызоваmb_internal_encoding()
должны быть равны той кодировке, в которой работает установка. -
Если используется веб-сервер Apache, но в нем должен быть установлен модуль mod_rewrite.
- Версия PHP должна быть не ниже 7.4.
Как настроить однобайтовую кодировку на CentOS 7
Самое главное – добавить mb_internal_encoding('Windows-1251');
в файл /bitrix/php_interface/dbconn.php.
Проверяем, правильно ли работает система:
var_dump(strtoupper("Москва")); var_dump(mb_strtoupper("Москва"));
Результат выполнения команды:
string(6) "Москва" string(6) "??????"
Видим ошибку. Проверяем, есть ли локаль cp1251 в системе. Если ответ 0 – нет, если 1 - есть:
[root@sitemanager ~]# locale -a | grep ru_RU.cp1251 -ic 0
Добавляем локаль в систему:
[root@sitemanager ~]# localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
Проверяем:
[root@sitemanager ~]# locale -a | grep ru_RU.cp1251 -ic 1
Перезагружаем веб-сервер:
[root@sitemanager ~]# systemctl restart httpd.service
Добавляем настройки в /bitrix/php_interface/dbconn.php:
setlocale(LC_ALL, 'ru_RU.CP1251' ); setlocale(LC_NUMERIC, 'C' ); mb_internal_encoding('Windows-1251');
Проверяем:
var_dump(strtoupper("Москва")); var_dump(mb_strtoupper("Москва"));
Получаем правильный результат:
string(6) "МОСКВА" string(6) "МОСКВА"