Не работает setlocale в Php

Не работает setlocale в Php

Хостинг Разработка

После переноса сайта на новый сервер, при выводе дат перестала работать русская локаль. Проверку локали в php можно сделать примерно так:

 

setlocale(LC_ALL, “ru_RU.utf8″ );
echo strftime (‘%A, %d %B %G’);

 

Если видим русскую дату, то всё хорошо. Но в моем случае дата выводилась по-английски.

Причина - на сервере не установлена локаль. Список установленных локалей можно проверить командой locale -a, или если нужно узнать есть ли русская локаль так: 

 

locale –a | grep ru

 

Если локалей нет, то нужно установить. В моем случае это был Debian.

Это командой устанавливаем пакеты лосалей

#aptitude install locales

Далее выбираем и устанавливаем нужные

#dpkg-reconfigure locales

Я устанавливаю все локали, по умолчанию выбираю en_US.utf8

Если нужно глобально включить русскую локаль, то это можно сделать в файле php.ini в секции  [intl]

 

intl.default_locale = ru_RU.utf8

 

но лучше для каждого сайта задать переменную севрера через .htaccess

 

SetEnv LC_ALL ru_RU.utf8