Сегодня мы рассмотрим одну распространенную проблему, с которой зачастую сталкиваются многие web-программисты, системные администраторы и т.п., имеющие shared-хостинг и несколько проектов, часть из которых построена на CMS Битрикс, часть на других. Как известно, для корректной работоспособности CMS Битрикс в php.ini должны быть указаны соответствующие значения mbstring.internal_encoding и mbstring.func_overload. Допустим что нужные значения в php.ini у вас уже выставлены должным образом:
И ваш Битрикс проект отлично работает. Теперь, вы хотите создать на том же хостинге отдельный виртуальный хост и установить туда другую CMS. Как правило, в случае если у вас shared хостинг вы не можете редактировать настройки Apache и nginx с помощью конфигов, а возможности панели управления для редактирования параметров виртуальных хостов достаточно скудные. В результате системная настройка mbstring.func_overload = 2 в php.ini действует на все ваши сайты, размещенные на этом хостинге. Но что хорошо для Битрикса - плохо для других CMS, т.е. CMS установленная на том же хостинге, но на другом сайте mbstring.func_overload = 2 вовсе не нужен, там должно быть значение 0. Как же исправить эту ситуацию? Для начала несколько полезных ссылок:
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
- .htaccess и php_value mbstring.func_overload
- Как настроить mbstring.func_overload=0 для отдельного каталога сайта?
<IfModule mod_php5.c>
#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
</IfModule>
При этом значения переопределялись. Однако, начиная с версии PHP 5.3 менять в .htaccess mbstring.func_overload действительно нельзя. Ни с помощью php_admin_value, ни с помощью php_value они не меняются. Для примера на моем PHP 5.4.34 именно так и было, данные настройки ни в .htaccess ни в .user.ini (есть и такой) не подхватывались. Воспользоваться же советом по редактированию конфигов Apache, чтобы сделать так:
<Directory /var/www/path/to/dir>
php_admin_value mbstring.func_overload 0
</Directory>
В моем случае тоже не получалось, т.к. доступ к их редактированию на shared-хостинге тоже отсутствует. Но выход есть. Ведь параметры для каждого конкретного хоста можно задавать в соответствующих разделах php.ini, которые появились как раз, начиная с 5.3.
comment 0 التعليقات:
more_vertsentiment_satisfied Emoticon