Ошибка: сайт работал в одно байтовой кодировке при восстановлении битрикс

Обновлено 30.05.2018

сайт работал в одно байтовой кодировке

Добрый день уважаемые читатели блога, сегодня я продолжу вам рассказывать про траблшутинг одной популярной CMS системы под названием 1С Битрикс, один мой подписчик задал мне вопрос, как исправить ситуацию с ошибкой:  Внимание! Сайт работал в одно байтовой кодировке, а конфигурация сервера рассчитана на кодировку UTF-8. Установите php_value mbstring.func_overload=0 или php_value mbstring.internal_encoding=ISO-8859-1. Давайте разбираться откуда растут ноги у данной проблемы.

Решаем ошибку восстановления

Расскажу предысторию, один мой подписчик переносил сайт клиента с одного хостинга на другой, он установил 1C битрикс на своем VPS. Все вроде бы стандартно, но когда он попытался восстановить битрикс из резервной копии, то получил ошибку:

Внимание! Сайт работал в одно байтовой кодировке, а конфигурация сервера рассчитана на кодировку UTF-8. Установите php_value mbstring.func_overload=0 или php_value mbstring.internal_encoding=ISO-8859-1.

Появляется она на третьем шаге, где нужно восстанавливать базу данных.

сайт работал в одно байтовой кодировке-2

Если понять из-за чего это происходит, то тут все просто. 1С Битрикс Веб окружение работает с ресурсами на кодировке UTF-8, а так как у клиента сайт древний и был создан на старой версии 1С Битрикс, он тупо не устанавливал обновления. В итоге у него ресурс работал в одно байтовой кодировке символов.

Для исправления данной проблемы, выполните вот такие действия. Во первых не нажимайте кнопку восстановить, перед этим вам необходимо произвести редактирование на вашем сервере одного конфигурационного файл, это либо .htaccess либо default.conf

В консоли сервера пишем:

vi /home/bitrix/www/.htaccess

В файле требуется за комментировать некоторые строки строки и кое-что дописать.

 

Комментируем:
#php_value mbstring.func_overload 2
#php_value mbstring.internal_encoding UTF-8
дописываем

php_value mbstring.func_overload 0
php_value mbstring.internal_encoding cp1251


В некоторых случаях придется править файл /etc/httpd/bx/conf/default.conf и дописать в него так же
php_value mbstring.func_overload 0
php_value mbstring.internal_encoding cp1251
или
php_admin_value mbstring.internal_encoding latin вместо cp1251

Сама Bitrix вам настоятельно рекомендует использовать кодировку ISO-8859-1, но так как в России исторически сложилось, что используют cp1251, то ставим ее. Не забудьте перезапустить сервер Apache

Если не правильно выставить параметр mbstring.func_overload, то вы вполне можете ловить ошибки с кодировкой и при авторизации. Параметр mbstring.func_overload, можно объявлять ив корневом .htaccess, просто добавьте строку:

php_value mbstring.func_overload 0

Тут  параметра mbstring.func_overload имеет значение 0, обращаю ваше пристальное внимание, что перед 0 идет пробел, но есть некое но, в PHP 5,2 и выше, параметр mbstring.func_overload из файла .htaccess просто не учитывается и вам придется править файл /etc/php.d/mbstring.in, вот пример:

vi /etc/php.d/mbstring.ini
; Enable mbstring extension module
extension=mbstring.so
mbstring.func_overload=0

Если же на вашем сайте используется кодировка UTF-8, то укажите для mbstring.func_overload значение 2. Чтобы проверить изменения, вам потребуется зайти в панель управления Bitrix > Настройки > Инструменты > Настройки PHP

сайт работал в одно байтовой кодировке-3

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *