setlocale(LC_CTYPE, 'ru_RU.UTF-8');
echo strtoupper("ггг");
echo setlocale(LC_CTYPE, 0);  - возвращает  - ru_RU.UTF-8
Да, я знаю что есть функция 
mb_strtoupper, которая определяет букву на основании свойств символа Юникода, и что так будет работать 
mb_strtoupper("ггг");
Но вопрос в другом. Почему если я установил 
LC_CTYPE в 
ru_RU.UTF-8, что должно активизировать эту локаль, для функций перевода в верхний/нижний регистры. Всё ровно функция 
strtoupper("ггг"); не работает?
В 
документации всё понятно описано:
setlocale ($category , $locale )
Параметр 
$category - это именованная константа, определяющая категорию функций, на которые будет влиять установка локали:
LC_CTYPE - функции преобразования и классификации строк, например 
strtoupper().
И я всё по логике делаю - 
setlocale (LC_CTYPE, 'ru_RU.UTF-8');echo strtoupper("ггг"); - а почему тогда это не работает непонятно