money_format()没有显示货币

Rah*_*eel 8 php

我正在尝试使用money_format功能.

<?php

$number = 1299.46;

setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number); // Outputs 1299.46
Run Code Online (Sandbox Code Playgroud)

虽然它应该打印$ sign或USD?

我在linux主机上.

谢谢

Sam*_*mir 13

money_format 如果区域设置无效,将无法正常工作.

例如,在Debian上,'en_US'不是有效的语言环境 - 您需要'en_US.UTF-8'或'en_US.ISO-8559-1'.


Yev*_*yev 5

区域设置是操作系统定义的常量。

我用于Ubuntu以下示例。

  1. 检查支持哪些区域设置:

    locale -a
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加您想要的区域设置(例如ru):

    sudo locale-gen ru_RU
    sudo locale-gen ru_RU.UTF-8
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行此更新命令

    sudo update-locale 
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新启动 php fpm (像这样检查你的 php 版本服务名称service --status-all

    sudo service php7.2-fpm restart
    
    Run Code Online (Sandbox Code Playgroud)

但要小心,因为您很可能正在使用Apache“mod_php”,因为它是最流行的。当 setlocale() 不是线程安全时,这个可以在多线程环境中工作。详情请看这里