193  /  282

Исправление ошибок в старых сайтах с кодировкой windows-1251

Просмотров: 24414
Дата последнего изменения: 02.09.2021
Внимание! Приведённые настройки выходят за рамки меню Виртуальной машины. Это означает, что информация - ознакомительная и применять её следует с чётким пониманием того что вы делаете и с собственной ответственностью за совершаемые действия. В нашей техподдержке рассматриваются только вопросы по работе пунктов меню ВМ.

При обновлении старых сайтов в кодировке Windows-1251, созданных в VMBitrix версии 7.4.3 или ниже, могут быть следующие ошибки:

  • Не работает Система обновлений продуктов «1С-Битрикс» – требует наличия параметра mb_internal_encoding('Windows-1251'); в dbconn.php.

  • При включенных предупреждениях Система обновлений не работает из-за предупреждения: «PHP Warning: htmlspecialchars(): charset `latin' not supported, assuming utf-8».

  • Проверка системы выдает ошибку «Строковые функции strtoupper и strtolower работают некорректно».


При обновлении VMBitrix до версии 7.5 и выше данные ошибки в установленных ранее сайтах в кодировке Windows-1251 автоматически не исправляются, поэтому вам нужно исправить их вручную для каждого такого сайта.

  1. Добавьте в файл /bitrix/php_interface/dbconn.php сайта строку:

    mb_internal_encoding('Windows-1251');
    
  2. В конфигурационном файле Apache для вашего сайта /etc/httpd/bx/conf/bx_ext_[ваш_сайт].conf замените строку:

    php_admin_value default_charset latin
    
    на такую:
    php_admin_value default_charset cp1251
    

    И перезапустите Apache:

    systemctl restart httpd.service
    
  3. Проверьте, есть ли локаль ru_RU.cp1251 в системе. Если ответ 0 – значит локали ru_RU.cp1251 нет, если 1 – есть:

    locale -a | grep ru_RU.cp1251 -ic
    

    Если локали ru_RU.cp1251 нет, выполните команду:

    localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
    
  4. Далее добавьте в файл /bitrix/php_interface/dbconn.php вашего сайта в кодировке windows-1251 две строки:

    setlocale(LC_ALL, 'ru_RU.CP1251' );
    setlocale(LC_NUMERIC, 'C' );
    

    И перезапустите Apache:

    systemctl restart httpd.service
    
  5. Все готово. Проделайте эти действия для каждого сайта с кодировкой windows-1251, установленного ранее.


Примечание: В VMBitrix 7.5 и выше новые сайты, создаваемые в кодировке Windows-1251, проблем с однобайтовыми кодировками не имеет.


3
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии