root@35395c2d434a:/var/www/project# locale -a
C
C.UTF-8
POSIX
en_GB.utf8
root@35395c2d434a:/var/www/project# echo $LC_MONETARY
en_GB.UTF-8
root@35395c2d434a:/var/www/project# php -r "echo setlocale(LC_MONETARY, 0).\"\n\";"
C
root@35395c2d434a:/var/www/project#
如您所见,我在en_GB.UTF-8中安装并设置了LC_MONETARY环境变量。但PHP并不关心并将其设置为C无论如何。是否有PHP配置,因此PHP将此系统设置为,所以我不必通过setlocale(LC_MONETARY, 'en_GB.UTF-
8')在每个PHP脚本中手动设置它?
答案 0 :(得分:0)
这似乎是C程序的限制。 PHP的setlocale函数只返回任何输出返回C的setlocale。来自http://php.net/manual/en/function.setlocale.php:
setlocale()的返回值取决于PHP所在的系统 运行。它准确返回系统setlocale函数 回报。
来自http://www.cplusplus.com/reference/clocale/setlocale/:
大多数运行环境都设置了某些区域设置信息 根据用户喜好或本地化。但是,独立 在这个系统区域设置中,所有C程序在启动时都具有“C”语言环境 set,这是一个相当中立的语言环境,具有最少的语言环境信息 这允许程序的结果是可预测的。为了使用 在环境中设置的默认语言环境,可以调用此函数 用“”作为参数区域设置。
在程序启动时,选择的语言环境是“C”语言环境,即 与通过调用setlocale(LC_ALL,“C”)设置的相同。
可以选择环境中选择的区域设置 调用setlocale(LC_ALL,“”)。
据我所知,默认情况下无法为所有C程序设置此项,也不能为PHP设置此项。
如果有人知道如何为所有PHP脚本执行此操作,我会接受这个答案。