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

06.03.2016 | Хостинг | автор: Дмитрий Васильев

После переноса сайта на новый сервер, при выводе дат перестала работать русская локаль. Проверку локали в 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

comments powered by HyperComments