Problems when working with Cyrillic in PHP scripts of the strtoupper() and strtolower() functions arise when the current locale is incorrectly defined. To define it correctly, you should use the setlocale() function at the very beginning of your PHP script:
<?php
setlocale(LC_ALL, 'ru_RU.CP1251');
echo strtoupper('Работает!');
?>