Для каждого php-приложения очень желательно жестко настроить локаль, чтобы не зависеть от настроек сервера. Иначе, по "закону подлости" - в самый неподходящий момент могут возникнуть проблемы с отображением данных. Причем, "артефакты" могут вылезти не только после переезда/миграции на другой сервер, но и даже как будто вообще без причины.

Как установить локаль для PHP - set locale for PHP Как раз подобный случай и произошел недавно с одним web-сервисом, реализованным на PHP.




  

Один из скриптов отображал в интерфейсе приложения срок действия базы данных (совпадает с циклами AIRAC), и администратор этого сервиса заметил странную штуку: срок действия февральской базы данных - цикл 2102 имел весьма странный срок действия -  с 25 января 2021 по 25 января 2021, хотя должен был иметь срок действия с 25 февраля 2021 по 25 марта 2021.

Различные проверки и эксперименты с PHP-скриптом показали, что он выдает дату в формате, у которого сокращенное название месяца выводится на русском языке: 2021-Фев-25 и 2021-Мар-25. А приложение, которое использует данные API, совсем не понимает по-русски, ему необходимо давать всё на английском языке! Соответственно, оно не понимало, какой ему передается месяц и правращало его по умолчанию в первый месяц года.

Причину данного сбоя выяснить не удалось, миграция сервиса точно не выполнялась :), проводились ли какие-то работы на сервере - пока узнать не получилось. Наиболее вероятно,  что системный администратор сервера изменил язык сервера по умолчанию на русский. Поэтому была выполнена настройка локали для PHP с указанием английского языка. В PHP-скрипт была добавлена строка:

 

setlocale(LC_ALL, 'en_US', 'en_US.UTF8', 'en', 'english');

 

Можно было добавить в сокращенном виде:

 

setlocale(LC_TIME, "en_US.UTF-8");

 

 Важно: не перепутать и корректно указать индекс языка - английских языков несколько, не стоит писать en_En (нет такой локализации!), есть: en_Gb, en_Us, en_Au, en_Bz, en_Ca, en_Ie, en_Jm, en_Nz, en_Za, en_Tt.

 


 

 

Вместо глобальной настройки LC_ALL можно указать отдельный параметр, на которые будет влиять локаль:

  • LC_COLLATE – функции сравнения строк
  • LC_CTYPE – функции преобразования и классификации строк
  • C_MONETARYL – для функции localeconv()
  • LC_NUMERIC – задает символ десятичного разделения
  • LC_TIME – форматирование даты/времени
  • LC_MESSAGES – для системных сообщений

 

Установка часового пояса:

Часовой пояс Москвы (UTC + 3):

 

date_default_timezone_set('Europe/Moscow');

 

Часовой пояс UTC:

 

date_default_timezone_set('GMT');

 

Все варианты временных зон - на сайте php.net.

 

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      Многофункциональный авиационный калькулятор
      Многофункциональный авиационный калькулятор

      Некоторым авиационным специалистам (пилотам, штурманам), а также курсантам авиационных училищ в определенный момент времени может понадобиться инструмент для выполнения некоторых инженерных расчетов. В качестве такого инструмента может выступать навигационная линейка НЛ-10, или компьютерная программа.




      Microsoft Word предсказал терракт 11 сентября!
      Microsoft Word предсказал терракт 11 сентября!

      11 сентября 2001 года два гражданских самолета врезались в башни Всемирного торгового центра в Нью Йорке. После чего башни-близнецы загорелись и через несколько часов рухнули, полностью развалившись на части... Одни (в том числе и американское правительство) считают Алькаиду виновной в этом терракте, другие подозревают в случившемся диверсию американской власти и американских спецслужб...




      Как убрать рекламу в uTorrent
      Как убрать рекламу в uTorrent

      Начиная с версии какой-то 3.xxxx в программе uTorrent появилась реклама. Причем, реклама довольно агрессивная - даже в те минуты, а иногда - секунды, когда программа uTorrent не свернута в трей, ее реклама успевает надоесть. Хорошо, что разработчики приложения uTorrent дали возможность пользователям программы через настройки отключить рекламу.




      Программа для пересчета координат СК-42 - WGS-84
      Программа для пересчета координат СК-42 - WGS-84

      Как гласит библейская легенда (не смотря на то, что в ней множество нестыковок, как и во всей библии - по мнению французского писателя Лео Таксиля), что при строительстве Вавилонской башни произошло нечто, и все люди стали говорить на разных языках - и из-за этого башню не удалось построить. Так и в авиации до сих пор существуют атавизмы - различные геодезические модели земного шара,...




      Священные сомы в Индии (видео)
      Священные сомы в Индии (видео)

      Бодхгайя — это место в Индии, где Будда достиг Просветления. Неподалеку от дерева бодхи находится священный пруд, где Будда, по достижении Просветления, пережидал сезон дождей и где его укрывал от дождей сам Король Нагов. И сейчас, с левой стороны от ступы, находится пруд. А в пруду живут сомы. И их очень много т.к ловить их и убивать не положено. Чем они и пользуются, наглея с каждым днем все больше и...




      Подборка полезных команд bash-Mac (башмак :)
      Подборка полезных команд bash-Mac (башмак :)

      Для полноценной работы с Mac рано или поздно придется использовать консоль. В маке она называется Терминалом. Кроме заурядных известных команд, некоторые действия приходится выполнять не часто, запоминать их особого смысла нет, лучше сохранить в шпаргалку. Консоль/терминал также называют - BASH (Bourne-Again SHell). Все это рассматриваем в рамках использования на компьютерах Mac, в итоге -...




      Канадский авиационный доллар
      Канадский авиационный доллар

      Что подарить знакомому нумизмату на день рожденья? - Конечно же редкую монету, которой у него еще нет в коллекции! А если этот нумизмат близок к авиации, или просто любит самолеты и все, что с ними связано, то самый лучший подарок для него - канадский юбилейный авиационный доллар!



Яндекс.Метрика