Bueno este mensaje esta en php.net al respecto de esta funcion:
Nótese que las letras son definidad por el locale actual. Esto quiere decir que, por ejemplo, en el locale por defecto ("C"), los caracteres como la ñ no serán convertidos.
Usa esta funcion que hace lo mismo pero no da ese error:
Código PHP:
<?php
$texto= "hola, cómo estás...";
$texto_mayusculas=str_to_upper("$texto");
echo "$texto_mayusculas";
function str_to_upper($str){
return strtr($str,
"abcdefghijklmnopqrstuvwxyz".
"\x9C\x9A\xE0\xE1\xE2\xE3".
"\xE4\xE5\xE6\xE7\xE8\xE9".
"\xEA\xEB\xEC\xED\xEE\xEF".
"\xF0\xF1\xF2\xF3\xF4\xF5".
"\xF6\xF8\xF9\xFA\xFB\xFC".
"\xFD\xFE\xFF",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
"\xDB\xDC\xDD\xDE\x9F");
}
?>