В .htaccess не работает установка mbstring.func_overload (решение) на примере виртуальной машины Битрикс 5.1

В .htaccess не работает установка mbstring.func_overload (решение)
  • 29.03.2019 22:15:12
  • 15.04.2016
  • 21336
  • 3.3
  • 0
  • Константин Винниченко

Проблема

Предыстория

Есть сервер, работающий на виртуальной машине Битрикс 5.1, иначе говоря на CentOS 6.7 c PHP 5.6.20 с root правами

Задача

  • На главном домене установить mbstring.func_overload=2 (что и задано по-умолчанию)
  • На поддомене поставить mbstring.func_overload=0

Оба сайта работают на UTF-8. Притом, у сайта на 1С-Битрикс обязательно должно быть mbstring.func_overload=2 иначе "Проверка системы" будет проходить с ошибками, а при свойствах компонента будет "Не удалось обнаружить код вызова компонента."

Попытка

Естественно попытки установить для поддомена в файле .htaccess значение func_overload=0 следующим образом

<IfModule mod_php5.c>
     php_value mbstring.internal_encoding UTF-8
     php_value mbstring.func_overload 0
</IfModule>
 

Обваливаются неудачей даже после перезагрузки Апача.

Решение

Коротко

Смысл в следующем, надо по умолчанию для сервера установить значение mbstring.func_overload=0, а каким доменам нужны другие значения то например mbstring.func_overload=2.

Притом значение для каждого домена нужно указывать в самом Apache HTTP Server, файл .htaccess , а в случае с BitrixVM, то там работает автоматическая конфигурация (сервис bvat) инастройки слетят после перезагрузки CentOS, поэтому значения надо указывать в специальных пользовательских файлах.

Подробно

Если версия BitrixVM 4, то пути следующие

   MySQL - /etc/mysql/conf.d/custom/
   PHP - /etc/php.d/custom/
   Apache - /etc/httpd/bx/conf/custom/

Если версия BitrixVM 5, то пути следующие

   MySQL - /etc/mysql/conf.d/
   PHP - /etc/php.d/z_bx_custom.ini
   Apache - /etc/httpd/bx/conf/custom/

Установим по умолчанию mbstring.func_overload=0

Нужно настроить php.ini , в случае с Битрикс ВМ версии 5, надо править файл /etc/php.d/ z_bx_custom.ini

[mbstring]
mbstring.func_overload = 0

Задаем значения mbstring.func_overload для каждого домена

Открываем файл /etc/httpd/bx/conf/default.conf и ищем примерно следующее

<Directory /home/bitrix/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   DirectoryIndex index.php index.html index.htm
   Order allow,deny
   allow from all
   php_admin_value session.save_path /tmp/php_sessions/www
   php_admin_value upload_tmp_dir /tmp/php_upload/www
</Directory>

И вконце добавляем свою чтобы выглядело так

...
   php_admin_value session.save_path /tmp/php_sessions/www
   php_admin_value upload_tmp_dir /tmp/php_upload/www
   php_admin_value mbstring.func_overload 2
</Directory>

Открываем файл для конфигурации другого домена, у Битрикс это выглядет так /etc/httpd/bx/conf/bx_ext_ДОМЕН.conf
Тоже самое, только там уже ставим php_value mbstring.func_overload 0

Перезагружаем сервер

Рестарт веб-сервера Apache можно сделать SSH-командой:
service httpd restart ИЛИ apachectl -k restart
Либо полностью перезагрузить ОС


Оценить статью

Рейтинг:
(3.3 из 5 - 1 голос)