Перейти к публикации

install.php date_default_timezone_get() и PHP 5.5


Рекомендованные сообщения

Насколько это актуально?

Вычитал на другом сайте

В install.php при инсталяции используется date_default_timezone_get(), которая с версии PHP 5.5 не используется...

...

Исправлять ничего не надо.

Баг может себя проявить на свежеустановленном скрипте, если не выставить часовой пояс в админке самостоятельно.

Попробую описать подробнее.

Сегодня ставил клиенту скрипт.

Установил, в админке в Настройках системы прописал Название сайта, Description, Keywords, Шаблон сайта по умолчанию.

При этом не указал часовой пояс. Так как раньше у меня на сервере стоял PHP 5.3 часовой пояс брался серверный это указывалось автоматически, и я не обращал на это никогда внимание.

Что делает скрипт.

Так как при установке скрипта, date_default_timezone_get() не сработал в конфиге сохранилось время как UTC.

При этом 4 тестовые новости -

Осуществление технической поддержки скрипта

Шаблоны для DataLife Engine

Приобретение и оплата скрипта

Добро пожаловать

импортировались по текущему времени сервера.

Уже при настройках скрипт вместо UTC выставил и сохранил первое значение из массива $langtimezones = array() которое оказалось (GMT-11:00) Остров Мидуэй

Я не обратил на это внимание и сохранил...

Теперь получалось что скрипт работал во времени GMT-11:00 а новости импортировались в GMT +3:00

До наступления времени публикации новостей 14 часов.

Естественно у меня на свежеустановленном сайте не отображалась ни одна новость, ни на главной ни в категориях...

Я полчаса не мог понять из-за чего и сидел ковырял сорцы..

Вроде и мелочь, но кто не сталкивался, может не понять и будет...

Изменено пользователем ChatMaster
Ссылка на сообщение
Поделиться на других сайтах

В install.php при инсталяции используется date_default_timezone_get(), которая с версии PHP 5.5 не используется...

На основании чего сделан данный вывод? Читаем документацию к PHP http://php.net/manua...imezone-get.php и видим что эта функция прекрасно работает и поддерживается и в PHP 5.5, а в данном случае когда не работает, просто имеется "криво" настроенный сервер, без указания часового пояса.

С чем я согласен, то нужно будет предусмотреть в будущем данную "кривизну" настроек сервера, и выставить часовой пояс по умолчанию, например на "Москву", если сервер не настроен, при установке скрипта

Ссылка на сообщение
Поделиться на других сайтах

В install.php при инсталяции используется date_default_timezone_get(), которая с версии PHP 5.5 не используется...

На основании чего сделан данный вывод? Читаем документацию к PHP http://php.net/manua...imezone-get.php и видим что эта функция прекрасно работает и поддерживается и в PHP 5.5, а в данном случае когда не работает, просто имеется "криво" настроенный сервер, без указания часового пояса.

С чем я согласен, то нужно будет предусмотреть в будущем данную "кривизну" настроек сервера, и выставить часовой пояс по умолчанию, например на "Москву", если сервер не настроен, при установке скрипта

На той странице которую вы указали, в общем то написанно :wacko: -

5.4.0 The TZ environment variable is no longer used to guess the timezone.

5.4.0 The timezone is no longer guessed from information available through the operating system as the guessed timezone can not be relied on.

Переменная окружения TZ больше не используется при угадывании временной зоны.

Временная зона больше не угадывается с помощью информации, полученной из операционной системы, так как данный метод нестабилен и на него нельзя полагаться.

Изменено пользователем ChatMaster
Ссылка на сообщение
Поделиться на других сайтах

ChatMaster, Это не говорит о не поддержки данной функции, в PHP 5.4 или PHP 5.5. Начиная с версии 5.3.x указание часового пояса обязательно в настройках PHP php.ini, а раньше было не обязательно. Смотрите описание функции откуда берутся значения часового пояса:

In order of preference, this function returns the default timezone by:

Reading the timezone set using the date_default_timezone_set() function (if any)

Prior to PHP 5.4.0 only: Reading the TZ environment variable (if non empty)

Reading the value of the date.timezone ini option (if set)

Prior to PHP 5.4.0 only: Querying the host operating system (if supported and allowed by the OS). This uses an algorithm that has to guess the timezone. This is by no means going to work correctly for every situation. A warning is shown when this stage is reached. Do not rely on it to be guessed correctly, and set date.timezone to the correct timezone instead.

Я выделил самое важное в данном вопросе жирным. И начиная с 5.4 для чтения конфигурации часового пояса по умолчанию считывается настройка PHP date.timezone из php.ini а не системная переменная TZ окружения ОС. Вот и вся разница. Просто часто обновляют PHP не читая инструкции по обновлению, нужно же обновлять настройки PHP, согласно новым требованиям и изменениям.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...