2013-11-13 2 views
3

Я работаю над облачной платформой, а сервер Apache.Функция setlocale php возвращает false, даже если локаль доступна на платформе

В одном из экземпляров сайта скрипт php setlocale (LC_ALL, "en_GB.utf8"); всегда возвращает false.

Этот язык, «en_GB.utf8» можно найти на платформе, когда я выполняю locale -a. Также заметил, что setlocale (LC_ALL, 0); возвращает «C».

Здесь PHP/Apache, похоже, не знают о локальных платформах платформы. Может ли кто-нибудь сказать мне, что может быть неправильным в случае?

ответ

1

перед тем, как сделать ставку LC_ALL, попробуйте LC_TIME.

setlocale(LC_TIME, ""); 
setlocale(LC_ALL, "en_GB.utf8") 

Смотрите, если это помогает ...

0
setlocale(LC_ALL, NULL) 
setlocale(LC_ALL, "en_GB.UTF-8") 

... сделал это для меня.

1

Вам необходимо перезагрузить конфигурацию apache, чтобы php/setlocale узнал новый языковой стандарт.

У меня была такая же проблема (локаль была установлена ​​и доступна на платформе), но setlocale действительно возвратил false, пока я не перезагрузил конфигурацию apache с помощью service apache2 reload.