2 апреля 2013 г.

php_value mbstring.func_overload не работает на 1c-bitrix (1c битрикс)


Ошибка при установке 1с-bitrix (1с битрикс) в кодировке utf-8. - mbstring.func_overload = 0

Недавно столкнулся с такой проблемой, что cms 1с-bitrix не хочет устанавливаться в кодировке utf-8 из за того, что значение директивы php_value mbstring.func_overload в настройках сервера равно 0, а для того чтобы продолжить установку необходимо чтобы параметр php_value mbstring.func_overload имел одно из этих значений: 2, 3, 6 7 


В чем же проблема, ведь можно прописать этот параметр php_value mbstring.func_overload в файле .htaccess, который находится в корневом каталоге сайта?

То что у меня в файле .htaccess, который находится в корневом каталоге сайте:



  php_flag short_open_tag On
  php_flag session.use_trans_sid off
  #php_value display_errors 1
  php_value mbstring.func_overload 2
  php_value mbstring.internal_encoding UTF-8


Но это не работает!

Т.к.  скорее всего какой то bug в сервере apache. Ссылка откуда я это взял: https://bugs.php.net/bug.php?id=47187&edit=1
Кому лень читать или переводить, то вот о чем там говорится:
Setting for mbstring.func_overload in .htaccess is not reflected.
Другими словами, установки для mbstring.func_overload в .htaccess не устанавливаются. Началось это с версии php 5.2.8 , сейчас же у меня используется версия php 5.3.x и до сих пор этот баг не исправлен. Может быть конечно так и задумано... Как будто сами разработчики 1c bitrix не знают, что эта директива mbstring.func_overload не работает через .htaccess, т.к. советуют использовать версию php выше 5.3 , а вариантом решения этой проблемы предлагают раскомментировать #php_value mbstring.func_overload 2 в .htaccess , которой у меня вообще не было.
Версия 1с-bitrix "Управление сайтом": 12.0.3, пакет: СТАРТ Что же делать? Варианты решения:

1) Написать своему хостинг провайдеру в службу поддержки, чтобы они в ручную изменили в настройках сервера значение этой директивы. Лично я так решил проблему. 2) И если же у вас собственный сервер, то:

1 вариант:

В файле httpd.conf вашего сервера, добавить следующий код:
<Directory "/your_path/egroupware"> php_admin_value mbstring.func_overload 7 Order allow,deny Allow from all </Directory>
!!! При этом не добавляйте никакие строки в .htaccess и php.ini

2 вариант:

В файле php.ini раскомментировать директиву mbstring.func_overload=2 или же дописать её, если её нет. 

Синтаксис использования директивы mbstring.func_overload везде разный, будьте внимательны. 
Лично я не пробовал 1 и 2 варианты решения этой проблемы, но надеюсь это сработает. 
Решения были найдены в интернете.