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

      Как выровнять многострочный UILabel по верхнему краю
      Как выровнять многострочный UILabel по верхнему краю

      Если содержимое UILabel в интерфейсе мобильного приложения может варироваться от одного короткого слова до двух предложений, то нужно немного постараться, чтобы это выглядело адекватно хорошо на различных устройствах с разными экранами. Когда UILabel не имеет фиксированного размера и должен меняеться динамически в зависимости от количества текста в нем, то это делается следующим образом:




      Программа Qloud для пилотов Qatar Airways
      Программа Qloud для пилотов Qatar Airways

      Авиакомпания Qatar Airways начала внедрение собственного нового приложения для iPad - Qloud. Это мобильное приложение собственной разработки, предназначенное только для использования внутри компании (так называемое Inhouse Application). Программа Qloudбудет обеспечивать всех пилотов авиакомпании Катар Эйрвэйс в режиме реального времени актуальной информацией в том числе - и для принятия решения.




      Как скрыть NavigationBar у первого ViewController (Swift)
      Как скрыть NavigationBar у первого ViewController (Swift)

      Иногда на первом ViewController необходимо не отображать NavigationBar, так как он он пустой (не имеет кнопок навигации). В Swift это можно сделать с помощью небольшого куска кода, вставленного в требуемый VeiwController внутрь функции viewWillAppear:




      Как настроить skype
      Как настроить skype

      Многие пользуются бесплатной программой skype. Но крайние версии скайпа уже не так лояльны к пользователям - программа стала слишком самостоятельной и в некоторых случаях напрягает своими действиями. Плохие черты характера skype стали более активно проявляться после покупки скайпа компанией Microsoft. Многим не понравилась эта "сделка с дьяволом", но популярность скайпа не сильно уменьшилась...




      SQL. Подсветка кода в MS Word
      SQL. Подсветка кода в MS Word

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




      Как переустановить сетевой протокол TCP IP
      Как переустановить сетевой протокол TCP IP

      При установке в составе какой-нибудь сборки Windows иногда может некорректно установиться сетевой протокол TCP IP. В этом случае нужно его переустановить, и по-другому просто никак. Как же переустановить сетевой протокол TCP IP? - без небольших "танцев с бубном" этого не сделать.




      Контакты в iPhone - управление, копирование, восстановление
      Контакты в iPhone - управление, копирование, восстановление

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



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