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

      Как изменить размер значков на рабочем столе Windows 7
      Как изменить размер значков на рабочем столе Windows 7

      Слепым эту статью не читать! :) После приобретения нового компьютера или ноутбука с становленной операционной системой Windows 7, а, может быть, просто вместо старого и доброго ХРюши (Windows XP) в неизбежном процессе upgrade на Windows 7 на рабочем столе созерцаем неестественно крупные иконки: Мой компьютер, Корзина,... и др. Так как многие пользователи частенько "заваливают" свой рабочий стол различными ярлыками, папками, файлами,...




      Сертификат iphone distribution ненадежен
      Сертификат iphone distribution ненадежен

      Ситуация: xCode v.10.xx, после импорта свежего сертификата и ключа iphone distribution в Keychain, в нем отображается красным цветом надпись:   Сертификат iphone distribution ненадежен    




      Удалить копирайт jcomments
      Удалить копирайт jcomments

      При использовании различных систем управления сайтами (CMS - Content Management System), например, Joomla, Wordpress или других, часто вебматера устанавливают дополнительные расширения (компоненты, модули, плагины), необходимыми для полноценного функционирования сайта. При этом, многие расширения отображают на страницах сайта, ссылку на сайт создателя этого расширения. С одной стороны, это...




      Восхождение на восточную вершину горы Эльбрус с флагом авиакомпании Волга-Днепр
      Восхождение на восточную вершину горы Эльбрус с флагом авиакомпании Волга-Днепр

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




      SWIFT - отправка по email
      SWIFT - отправка по email

      В любом iOS-приложении легко можно реализовать отправку данных по e-mail. Для этого нужно сделать следующее:




      Henry Emery & Andy Roberts - Aviation English
      Henry Emery & Andy Roberts - Aviation English

      Aviation English by Henry Emery & Andy Roberts - новый курс английского языка, предназначенный для подготовки летных специалистов (пилотов, борт-радистов, штурманов и авиадиспетчеров) к 4-му уровню владения английским языком по шкале ИКАО. Материал Aviation English by Henry Emery & Andy Roberts отвечает всем требованиям, предъявляемым к языковой подготовке авиаперсонала (DOC 9825 ИКАО – «ICAO...




      Санкции против российской авиации
      Санкции против российской авиации

      В начале марта 2022 года США и Европа ввели новые санкции против России. Не смотря на то, что многие уже привыкли к разным санкциям со стороны "буржуев", в этот раз все оказалось гораздо серьезнее. И в этот раз под санкции попала Российская авиация.  Во-первых, Евроконтроль закрыл свое воздушное пространство для российских ВС. Во-вторых, иностранные компании, которые ранее передали свои самолеты Boeing и Airbus в лизинг...



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