Функция money_format () определяется, только если система имеет возможности strfmon. Например, Windows этого не делает, поэтому money_format () не определена в Windows.
Так что вы можете использовать этот PHP-код:
setlocale(LC_ALL, ''); // Locale will be different on each system.
$amount = 1000000.97;
$locale = localeconv();
echo $locale['currency_symbol'], number_format($amount, 2, $locale['decimal_point'], $locale['thousands_sep']);
При этом вы можете писать код, который на самом деле является переносимым, а не полагаться на функции операционной системы. Наличие функции money_format в PHP без расширения является довольно глупым. Я не понимаю, почему вы хотели бы создать подобные несоответствия между различными операционными системами в языке программирования