Для каждого 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)
Поделитесь своим местоположением

      TORA,TODA, ASDA и LDA
      TORA,TODA, ASDA и LDA

      Для расчета взлетно-посадочных характеристик приходится оперировать различными данным, в том числе располагаемыми дистанциями: TORA,TODA, ASDA и LDA. Каждый аэродром должен определять располагаемые дистанции для всех имеющихся ВПП (для каждого торца) для публикации их в АИПе или в НОТАМ.




      Mozilla Firefox + плагины и дополнения
      Mozilla Firefox + плагины и дополнения

      27 сентября 2011 года вышла новая версия популярного браузера Mozilla Firefox - седьмая (7). Поздравляем рыжую лисичку с очередной реинкарнацией! Ура! :) Если честно, то в последнее время обновления браузеров (и Firefox и Opera) напоминает какую-то гонку вооружений. Индекс версии меняется на порядок! Неужели на столько глобальные изменения подвергают эти программы?




      Как вызвать диспетчер задач в Mac
      Как вызвать диспетчер задач в Mac

      Очень просто - нажать CMD + ALT + ESCили CMD + Option + ESC В яблочной операционной системе нет как такового диспетчера задач, но имеется его упрощенный аналог - "Принудительное завершение программ".




      Авиационный фотограф Стив Моррис
      Авиационный фотограф Стив Моррис

      Еще летит твой самолет, куда? - ты сам пока не знаешь.Штурвал берет другой пилот, а ты об этом лишь мечтаешь... В. Захаров Фотографии Стива Морриса завораживают, и не важно, что на большинстве фотографий Стива не видна окраска воздушных судов, по которой можно идентифицировать принадлежность к авиакомпании, виден только силуэт, по которому угадывается тип и модификация ВС. Такой подход позволяет...




      Как отобразить KML-трек в Garmin Pilot
      Как отобразить KML-трек в Garmin Pilot

      Есть такое iOS-приложение - Garmin Pilot, которое можно было бы назвать замечательным, но с марта 2022 года она стало немного иным... Но, довольно грустной лирики, ибо есть люди, которые до сих пор пользуются этим приложеним не смотря ни на что. Итак, в некоторых случаях пилотам может понадобиться выполнять полет и контролировать местоположение ВС относительно некого трека, который был записан ранее. Если...




      Эволюция Jeppesen - улучшенные схемы процедур SID/STAR
      Эволюция Jeppesen - улучшенные схемы процедур SID/STAR

      Основываясь на обратной связи от пилотов, компания Jeppesen приняла решение усовершенствовать свои IFR-схемы процедур SID и STAR. Эти усовершенствования нацелены на повышение ситуационной осведомленности, сократить продолжительность полета по приборам без наблюдения за внекабинной обстановкой (reduce heads-down time = уменьшение времени отвлечения внимания пилотов от пилотажных приборов) и,...




      Сбой установки профиля. iPad не активирован
      Сбой установки профиля. iPad не активирован

      При использовании Программы Развертывания (Deployment Program) BYOD при установке профиля регистрации (Enrollment Profile) мобильного устройства на MDM-сервере, установка профиля может не выполнится, а мобильное устройство отобразит сообщение с ошибкой: Сбой установки профиля. iPad не активирован При установке профиля регистрации на контролируемые устройства (supervised devices) такая ошибка не может быть в принципе. Но если планшет является личным устройством, и...



Яндекс.Метрика
Сайт работает на быстром VPS/VDS хостинге от FASTVPS