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

      Как убрать оперу из трея
      Как убрать оперу из трея

      Хоть браузер Опера - гавно, некоторые пользователи сети Интернет им все равно пользуются, в том числе и я. Иногда. Когда проверяю как себя ведет какой-нибудь сайт или скрипт в различных браузерах. В этом случае проверка осуществляется на максимально возможном количестве браузеров: Mozilla Firefox, Chrome, Opera, Safari, Internet Explorer.




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

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




      Как удалить adobe flash player
      Как удалить adobe flash player

      Иногда может возникнуть ситуация, что необходимо удалить из операционной системы Adobe Flash Player. Причин для этого может быть несколько, основная - частые ошибки этого плейера или его службы автоматического обновления.   Самая распространенная ошибка adobe flash player - это ошибка его службы автоматического обновления. При этом отображается окно с нетривиальной надписью: "FlashPlayerUpdateService.exe...




      Фразы про БОЛЬ (PAIN)
      Фразы про БОЛЬ (PAIN)

      Выражения, в которых используется слово БОЛЬ (pain), использование их в повседневной речи и сравнение с русскими аналогами. 1. NO PAIN, NO GAIN (досл. «нет боли, нет выгоды») - Это выражение можно перевести как «не попотеешь, не заработаешь». Имеется русский аналог: «под лежачий камень вода не течет», «без труда не вытащишь и рыбку из пруда».Пример: If you want to be successful you should work hard....




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

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




      Про НОТАМы
      Про НОТАМы

      НОТАМы (NOTAM = NOTice for Air Men) - это существенные изменения в аэронавигационной обстановке. Международные НОТАМы распространяются из мест их издания по всему миру. Некоторые страны издают также региональные (внутренние) НОТАМы, которые доступны обычно только для эксплуатантов своей страны. НОТАМы дополняют сборники аэронавигационной информации и обеспечивают актуализацию аэронавигационной информации через...




      Как скачивать файлы с сайта с помощью БАТника
      Как скачивать файлы с сайта с помощью БАТника

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



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