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

      Как запретить Safari автоматически распаковывать архивы
      Как запретить Safari автоматически распаковывать архивы

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




      Короткая история про закрылки
      Короткая история про закрылки

      ... Разбиваются обычно долб#&бы. Вот сидят десять экипажей, водку пьют. Напились, и вот вдруг один начинает: - Да вот что вы, гражданские, вы летать не умеете. Вот мы военные - круто летаем, закрылки перед взлетом не выпускаем!




      Mapsme VS Google Maps
      Mapsme VS Google Maps

      В настоящее время имеется большое разнообразие программ для навигации: Mapsme, Яндекс.Навигатор, Sygic, Навител, Copilot, Magic Earth, iGo, TomTom Go и множество других приложений. Наиболее популярные версии - для iOS и для Android, для других платформ (например, Windows) не каждый производитель делает приложение. Разные пользователи выбирают и используют различные приложения для навигации - кому какие...




      Переменные средЫ Windows - TEMP и TMP
      Переменные средЫ Windows - TEMP и TMP

      Переменные среды Windows - ударение на "Ы" во втором слове (смысл фразы заложен в родительном падеже и верном ударении: переменные чего? - среды!), в англоязычных версиях виндовс - environment variable) Переменные среды Windows используются для настройки операционных систем. Не каждому пользователю нужно разбираться с этими настройками и влезать в эти переменные, но есть пара переменных, о которых нужно...




      Как отключить стандартную оболочку в навигаторе EXPLAY PN-355
      Как отключить стандартную оболочку в навигаторе EXPLAY PN-355

      Все автомобильные GPS-навигаторы имеют меню с достаточного размера кнопками на сенсорном экране для выстрого запуска необходимых приложений, в первую очередь - программы для непосредственной навигации. Многие современные навигаторы имеют возможность менять путь к навигационной программе. Поэтому при установке альтернативного ПО есть возможность безболезненно через настройки меню задать временно или...




      Как сохранить все фотографии с iPhone на компьютер
      Как сохранить все фотографии с iPhone на компьютер

      У многих владельцев iPhone возникает проблема - как быстро и просто перенести все фотографии и видео с телефона на компьютер, чтобы потом освободить память смартфона?   В этой статье рассмотрим несколько проверенных рабочих вариантов, из которых вы сможете выбрать наиболее удобный для себя.




      Статистика использования различных версий iOS
      Статистика использования различных версий iOS

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



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