У меня здесь странная проблема. Вот код:i18n не работает через php-fpm в 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. Модули Gettext и Intl включены в конфигурациях CLI и FPM.
Спасибо!
Кстати, тот же код работает довольно хорошо на ближайшем Centos 6.6. Это заставляет меня смущаться. –
Это может иметь какое-то отношение к текущему рабочему каталогу, отличающемуся между CLI и вашим веб-сервером. Пробовали ли вы искать в журнале ошибок, чтобы убедиться, что вы не получаете никаких ошибок в отношении отсутствующих файлов локализации? –
@ S.Imp Я пытался отладить fpm через 'strace' и получил почти ничего: http://pastebin.com/pTG6WkBs PHP-FPM задает правильный каталог локалей и ничего не делает после. Невозможно, если он пытается получить любой файл * .mo вообще –