При попытке установить Joomla (или на рабочем сайте после изменения настроек PHP) вы можете встретить ошибку: Fatal error: String functions are overloaded by mbstring in /путь/к/сайту/libraries/vendor/joomla/string/src/phputf8/utf8.php on line 39. Конечно, все эти Fatal error наводят жути, но не стоит их так бояться. Для устранения этой ошибки нужно:
- Открыть php.ini (в ubuntu он может лежать в /etc/php5/apache2/php.ini).
- Найти в нем параметр mbstring.func_overload и установить его значение равное нулю (mbstring.func_overload=0). В последних версиях PHP нельзя выставить параметры модуля mbstring в .htaccess.
- Перезагрузить 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 удаленный код также может вернуться на свое место сам.