PHP的setlocale不起作用

我尝试使用nginx在我的覆盆子pi中将语言环境从fr_FR设置为PHP(php-fpm)中的us_US。
这是我的代码:

<?php system('locale -a'); /* C POSIX en_US.utf8 fr_FR fr_FR.iso88591 fr_FR.iso885915@euro fr_FR.utf8 So the en_US locale is well installed */ echo locale_get_default(); /* fr_FR */ echo setlocale(LC_ALL, '0'); /* LC_CTYPE=fr_FR.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C; LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C; LC_MEASUREMENT=C;LC_IDENTIFICATION=C */ var_dump(setlocale(LC_ALL, 'en_US.UTF-8', 'en_US.UTF8')); /* bool(false) */ var_dump(setlocale(LC_ALL, 'fr_FR.UTF8')); /* string(10) "fr_FR.UTF8" useless, but it shows that setlocale works with the already set locale */ ?> 

我不明白为什么setlocale返回false
看来有些东西不起作用,但我无法find什么。

在使用php5-fpm运行nginx的debian机器上安装额外的语言环境后,我遇到了同样的问题

要解决这个问题,我不得不重新启动php5-fpm。

从文档( 在Windows上注意):

在Windows上 ,setlocale(LC_ALL,“)从系统的区域/语言设置(通过控制面板访问)设置区域设置名称。

http://php.net/manual/en/function.setlocale.php

跑完之后为我工作:

 sudo apt-get -y install language-pack-pt service php7.1-fpm restart <?php date_default_timezone_set('America/Sao_Paulo'); setlocale(LC_ALL, 'pt_BR', 'pt_BR.iso88591', 'pt_BR.utf8'); echo \Carbon\Carbon::now()->addMonth()->formatLocalized('%d %B %Y');