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

      Сертификат безопасности аккумулятора Apple iPad
      Сертификат безопасности аккумулятора Apple iPad

      Планшеты iPad имеют усовершенствованный литий-полимерный аккумулятор, который обеспечивает до десяти часов работы*. Кроме требования длительного времени функционирования аккумулятор для iPad батарей был разработан в соответствии с международными стандартами техники безопасности.




      Настройка статического IP-адреса на Linux Debian 9
      Настройка статического IP-адреса на Linux Debian 9

      Иногда необходимо самостоятельно изменить IP-адрес сервера. Все мануалы и "полезные статьи" в интернете указывают, что нужно всего-то внести изменения в файл сетевых настроек: etc/network/interfaces Но нигде это не написано главного, и все статьи в интернете не принимают в расчет конкретный номер версии операционной системы Debian и разные варианты реализации сетей!




      Проверка сроков действия НБД Jeppesen в EFB
      Проверка сроков действия НБД Jeppesen в EFB

      Не смотря на информацию в статье "Срок действия баз данных Jeppesen для EFB" у некоторых товарищей периодически возникают вопросы относительно актуальности баз данных Jeppesen в программах EFB. С одной стороны, их вопросы вполне логичны, так как интерфейс программы Jeppesen FD PRO все еще не идеален, и некоторые моменты весьма не однозначны для пользователей. Например, если открыть в приложении Jeppesen FD PRO страницу Updates, то можно увидеть, что...




      Требуются ли аэронавигационные карты при использовании навигационных баз данных?
      Требуются ли аэронавигационные карты при использовании навигационных баз данных?

      По мере того, как навигация с использованием спутниковой системы (GPS навигация), бортовых пилотажных комплексов (FMS), компьютерных полетных карт и компьютерных систем планирования полетов получали распространение, авиационные компании и разработчики ПО предоставляли все больше и больше технических характеристик. Благодаря большому количеству систем, доступных на сегодняшней день, можно легко...




      Из аэропорта Франкфурт Майн в Раунхайм на электричке
      Из аэропорта Франкфурт Майн в Раунхайм на электричке

      Нужно было давеча попасть в небольшую немецкую деревушку - Раунхайм (Raunheim), расположенную не далеко от аэропорта Франкфурт Майн (EDDF/FRA). Расстояние от терминала вроде бы смешное - всего-то около 10 километров, но использовать такси - как-то не спортивно, пешком - не солидно, в результате было принято решение воспользоваться железнодорожным немецким транспортом. Железнодорожный транспорт в Германии очень...




      Как добавить кнопку +1 от Google на сайт
      Как добавить кнопку +1 от Google на сайт

      Кнопка +1 позволяет людям, которым понравился ваш сайт, рекомендовать его друзьям и знакомым прямо в поиске Google. Кнопка "+1" помогает пользователям узнавать о веб-сайтах, результатах поиска Google или об объявлениях от тех, кому они доверяют. Добавляя кнопку "+1" на свои страницы, вы предоставляете посетителям возможность рекомендовать их друзьям и контактам. Эти рекомендации будут показаны в наиболее...




      Нормативные документы по аэронавигационным данным
      Нормативные документы по аэронавигационным данным

      Doc 9674 – Руководство по всемирной геодезической системе WGS-84; DOC 8126 – Руководство по службам аэронавигационной информации; DOC 9613 – Руководство по требуемым навигационным характеристикам (RNP); Doc 9674 – Руководство по всемирной геодезической системе WGS-84; JAA TGL10 – Temporary Guidance Leaflets (Временные наставления по P-RNAV); Eurocontrol. Document 003-93, Area Navigation...



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