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

      Служба спасения 911 - Рождественский кошмар
      Служба спасения 911 - Рождественский кошмар

      Ведущий: Ежедневно тысячи людей попадают в кpитические ситуации, безвыходные положения, ломают pуки и ноги. Помочь им в этом пpизвана наша пpогpамма и служба "Спасение 911". Приободрить людей, попавших в беду, свести все к шутке - в этом состоит наша главная задача. И об одном таком случае, случившемся в Рождество, я не имею пpава молчать. Да, собственно, не очень-то и хочется.




      URL-encoding & ASCII Characters
      URL-encoding & ASCII Characters

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




      Обновление навигационных баз данных навигатора Garmin GPS Map 495
      Обновление навигационных баз данных навигатора Garmin GPS Map 495

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




      Конвертация треков в формат FliteStar/FliteMap
      Конвертация треков в формат FliteStar/FliteMap

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




      Гаджеты для iPad
      Гаджеты для iPad

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




      Окончание срока действия сертификата Jeppesen FDPro
      Окончание срока действия сертификата Jeppesen FDPro

      По причине не простой процедуры получения эксплуатационного одобрения по использованию EFB в некоторых странах и необходимости конкретно указывать номер версии используемого в EFB ПО для программ Типа A и Типа B, Jeppesen с помощью Apple реализовал возможность использовать определенную версию программы Jepp FP PRO без обновления до крайней версии. Но у этого метода есть один серьезный недостаток - программа,...




      Огни статуса ВПП - Runway Status Lights
      Огни статуса ВПП - Runway Status Lights

      20 октября 2014 года в аэропорту Москва Внуково произошла авиакатастрофа с самолетом Falcon 50EX французской авиакомпании UniJet (регистрационный номер F-GLSA). При выполнении взлета ночью в сложных метеоусловиях воздушное судно столкнулось со снегоочистителем, совершившим несанкционированный выезд на ВПП. Конечно же было проведено тщательное расследование данного происшествия, были определены все причины -...



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