Печать
Просмотров: 20623

Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

При попытке установить Joomla (или на рабочем сайте после изменения настроек PHP) вы можете встретить ошибку: Fatal error: String functions are overloaded by mbstring in /путь/к/сайту/libraries/vendor/joomla/string/src/phputf8/utf8.php on line 39. Конечно, все эти Fatal error наводят жути, но не стоит их так бояться. Для устранения этой ошибки нужно:

  1. Открыть php.ini (в ubuntu он может лежать в /etc/php5/apache2/php.ini).
  2. Найти в нем параметр mbstring.func_overload и установить его значение равное нулю (mbstring.func_overload=0). В последних версиях PHP нельзя выставить параметры модуля mbstring в .htaccess.
  3. Перезагрузить web-сервер, в случае с apache под ubuntu это делается командой sudo service apache2 restart, ну или можно sudo /etc/init.d/apache2 restart.

Вот и все решение.

Если у вас PHP установлен как модуль для apache, то для конкретного виртуального хоста можно менять настройки, используя конструкцию:

 

<IfModule mod_php5.c>
php_value default_charset utf8
php_admin_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf8
php_admin_value realpath_cache_size "4096k"
</IfModule>

Еще можно просто удалить этот кусок кода в файле utf8.php:

if ( extension_loaded('mbstring')) {
    if ( ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING ) {
        trigger_error('String functions are overloaded by mbstring',E_USER_ERROR);
    }
    mb_internal_encoding('UTF-8');
}

Но этот костыль стоит делать в крайнем случае, если сайт, например, на хостинге, и там никак не докопаться до настроек PHP. Если в дальнейшем поменяются настройки PHP, то для работы сайта, возможно, потребуется вернуть фрагмент кода на свое место. При обновлении версии Joomla удаленный код также может вернуться на свое место сам.

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter