В .htaccess не работает установка mbstring.func_overload (решение) на примере виртуальной машины Битрикс 5.1
Заказать услугу: ""
Содержание с переходом
Проблема
Предыстория
Есть сервер, работающий на виртуальной машине Битрикс 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
Либо полностью перезагрузить ОС