i18n 在 debian 中无法通过 php-fpm 工作

i18n not working via php-fpm in debian

我这里有一个奇怪的问题。这是代码:

 cat ./test.php
<?php

setlocale(LC_ALL,"");
//setlocale(LC_MESSAGES,'ru');
//setlocale(LC_CTYPE,'ru');
putenv("LANG=ru");
putenv("LANGUAGE=ru");

$domain = 'messages';
bindtextdomain($domain, "./locale");
textdomain($domain);
//var_dump($r);
//exit;

echo gettext("Welcome to My PHP Application");
print "\n";
echo gettext("ololo");

这里是本地化文件:

find ./locale/
./locale/
./locale/ru
./locale/ru/LC_MESSAGES
./locale/ru/LC_MESSAGES/messages.mo
./locale/ru/LC_MESSAGES/messages.po
./locale/en
./locale/en/LC_MESSAGES
./locale/en/LC_MESSAGES/messages.mo
./locale/en/LC_MESSAGES/messages.po

当我通过 CLI 执行脚本时,一切正常:

php ./test.php
Добро пожаловать!
452231

但是当我从网络上调用它时,我只得到:

Welcome to My PHP Application
ololo

我错过了什么?我正在使用 Debian 8.6、nginx、php-fpm 5.6.29。在 CLI 和 FPM 配置中都启用了 Gettext 和 Intl 模块。

谢谢!

解决方案作者: php-fpm.conf clear_env 参数默认设置为 Yes通过在添加此池配置中指定的环境变量之前清除工作人员中的环境来防止任意环境变量到达 FPM 工作进程 它应该设置为 No 参见手册 http://php.net/manual/en/install.fpm.configuration.php#clear-env